<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/git/next/linux-next.git/tools/testing/selftests/filesystems, branch master</title>
<subtitle>The linux-next integration testing tree</subtitle>
<id>https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/atom?h=master</id>
<link rel='self' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/'/>
<updated>2026-09-14T14:06:34+00:00</updated>
<entry>
<title>Merge branch 'fs-next' of linux-next</title>
<updated>2026-09-14T14:06:34+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2026-09-14T14:06:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=f5d1f60a017a3a2985e0cff74fb52a63aa028d0b'/>
<id>urn:sha1:f5d1f60a017a3a2985e0cff74fb52a63aa028d0b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'vfs.all' of https://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs.git</title>
<updated>2026-09-14T10:04:56+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2026-09-14T10:04:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=77b3361016c0d29cff7008b150dd1c967be900c4'/>
<id>urn:sha1:77b3361016c0d29cff7008b150dd1c967be900c4</id>
<content type='text'>
</content>
</entry>
<entry>
<title>selftests/epoll: fix race condition in multi-waiter wakeup tests</title>
<updated>2026-09-14T04:33:27+00:00</updated>
<author>
<name>Florian Schmaus</name>
<email>florian.schmaus@codasip.com</email>
</author>
<published>2026-08-28T15:54:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=42793a12bca71e308c86f1a5f80ce1fcb3113718'/>
<id>urn:sha1:42793a12bca71e308c86f1a5f80ce1fcb3113718</id>
<content type='text'>
In tests with multiple concurrent waiters on edge-triggered epoll
instances where an emitter writes to multiple sockets (epoll16, epoll56,
epoll58):

When the emitter performs its first write(), ep_poll_callback() fires and
wakes up both waiters because one waiter uses epoll_wait() and the other
one uses poll().  This translates to different wait queues, ep-&gt;wq for
epoll and ep-&gt;poll_wait for poll/select, which are both awoken by the
kernel because of that single write.  Next, both waiter threads invoke
epoll_wait(), but since there is only one event, only one epoll_wait()
will return non-zero because of the edge-triggered mode being used (in
level-triggered mode, the kernel would re-queue the event because of
remaining unread data).

Since the second waiter sees an empty ready list, it does not increment
ctx.count and the test fails spuriously with ctx.count == 1 instead of 2.

  Emitter (CPU 0)      Thread 0 (CPU 1)        Thread 1 (CPU 2)
  ===============      ================        ================
                       epoll_wait(e0, -1)      poll(e0, -1)
                       [on e0-&gt;wq]             [on e0-&gt;poll_wait]

  write(sfd[1])
       |
       +--(Kernel wakes BOTH e0-&gt;wq and e0-&gt;poll_wait via callback)--+
       |                                                             |
       |               wakes up                wakes up              |
       |               epoll_wait() reaps e1   poll() returns 1      |
       |               (e1 removed via ET)     (wants event)         |
       |               e0-&gt;rdllist is EMPTY          |               |
       |               count++ (count = 1)           v               |
       |                                       epoll_wait(e0, 0)     |
       |                                       sees EMPTY list!      |
       |                                       returns 0!            |
       |                                       thread exits          |
       v                                                             |
  write(sfd[3])                                                      |
  (event arrives too late!)                                          v
                           EXPECT_EQ(count, 2)  &lt;-- SPURIOUS FAILURE!

Introduce waiter_entry1ap_loop() to retry poll() if the initial
epoll_wait(..., 0) yielded no events.  This ensures the thread waits for
the subsequent write rather than failing immediately.  Apply this helper
in epoll16, epoll56, and for both waiter threads in epoll58.

Link: https://lore.kernel.org/20260828-selftest-epoll-fix-race-v2-1-953ab57fd60a@codasip.com
Fixes: f2728fe80cef ("selftests: add epoll selftests")
Signed-off-by: Florian Schmaus &lt;florian.schmaus@codasip.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Heiher &lt;r@hev.cc&gt;
Cc: Roman Penyaev &lt;rpenyaev@suse.de&gt;
Cc: Shuah Khan &lt;shuah@kernel.org&gt;
Cc: Christian Brauner &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'vfs-7.4.misc' into vfs.all</title>
<updated>2026-09-11T13:14:18+00:00</updated>
<author>
<name>Christian Brauner</name>
<email>brauner@kernel.org</email>
</author>
<published>2026-09-11T13:14:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=199937170c97505308e98cdabdcabd0a6630306b'/>
<id>urn:sha1:199937170c97505308e98cdabdcabd0a6630306b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'vfs-7.4.lookup' into vfs.all</title>
<updated>2026-09-11T13:01:43+00:00</updated>
<author>
<name>Christian Brauner</name>
<email>brauner@kernel.org</email>
</author>
<published>2026-09-11T13:01:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=f5d607b8091438d8416d0e3ae02532a18539b48b'/>
<id>urn:sha1:f5d607b8091438d8416d0e3ae02532a18539b48b</id>
<content type='text'>
Signed-off-by: Christian Brauner &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'vfs-7.4.kernfs' into vfs.all</title>
<updated>2026-09-11T13:01:43+00:00</updated>
<author>
<name>Christian Brauner</name>
<email>brauner@kernel.org</email>
</author>
<published>2026-09-11T13:01:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=be7bb1e21588eb784d6f61712acf88abf49a1af6'/>
<id>urn:sha1:be7bb1e21588eb784d6f61712acf88abf49a1af6</id>
<content type='text'>
Signed-off-by: Christian Brauner &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>selftests: cover kernfs file handles and same-parent rename</title>
<updated>2026-09-10T07:36:48+00:00</updated>
<author>
<name>Shakeel Butt</name>
<email>shakeel.butt@linux.dev</email>
</author>
<published>2026-09-05T19:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=60da22a38b01eae6f343f3aad8e78924a4b97aeb'/>
<id>urn:sha1:60da22a38b01eae6f343f3aad8e78924a4b97aeb</id>
<content type='text'>
The kernfs tests only reach kernfs through lookup and readdir.  Two
paths are not covered: file handles, which find a node without a lookup
through its parent, and rename of a node that keeps its parent.

Add three tests:

 - decode a file handle, live and after the node is gone;
 - decode while the node is being removed;
 - look up a name while an interface is renamed, which renames its
   /sys/class/net entry with the parent unchanged.

Two small fixes while here.  ns_tag_isolates_class_net now counts only
symlinks, because bonding adds a bonding_masters attribute that is not a
device.  A failing mkdtemp() now skips instead of aborting.

Signed-off-by: Shakeel Butt &lt;shakeel.butt@linux.dev&gt;
Link: https://patch.msgid.link/20260905191613.3143937-2-shakeel.butt@linux.dev
Signed-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>bfs: remove the filesystem</title>
<updated>2026-09-04T10:43:07+00:00</updated>
<author>
<name>Ethan Nelson-Moore</name>
<email>enelsonmoore@gmail.com</email>
</author>
<published>2026-09-04T08:29:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=e36781a626b2708d42a188f6274f1c7897251f1f'/>
<id>urn:sha1:e36781a626b2708d42a188f6274f1c7897251f1f</id>
<content type='text'>
BFS (not to be confused with BeFS, the BeOS filesystem) is the
filesystem UnixWare uses for its boot partition. It has extremely
limited functionality, only supporting contiguous files and no
subdirectories. Even though the bfs driver is very small and is
unlikely to cause future maintenance problems, given that the only type
of data stored on such a partition is likely to be kernels and
bootloader settings, there is very little reason anyone would want to
access it from Linux. Other old Unix filesystems (efs, freevxfs) have
been removed recently, and bfs is highly unlikely to have any users, so
remove it as well. Retain the UAPI header to be safe.

Also update the former maintainer's email address in CREDITS.

Signed-off-by: Ethan Nelson-Moore &lt;enelsonmoore@gmail.com&gt;
Link: https://patch.msgid.link/20260904082954.48738-1-enelsonmoore@gmail.com
Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Acked-by: Lorenzo Stoakes (ARM) &lt;ljs@kernel.org&gt;
Acked-by: Tigran Aivazian &lt;aivazian.tigran@gmail.com&gt;
Signed-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>selftests: cover kernfs dentry revalidation</title>
<updated>2026-09-04T08:06:57+00:00</updated>
<author>
<name>Shakeel Butt</name>
<email>shakeel.butt@linux.dev</email>
</author>
<published>2026-09-02T01:40:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=c38b381d20273f1f3d0f30c019a6020c34815f83'/>
<id>urn:sha1:c38b381d20273f1f3d0f30c019a6020c34815f83</id>
<content type='text'>
kernfs_test only checked two xattr calls. It did not touch the part of
kernfs that userspace hits most: the dentry cache.

The kernel adds and removes kernfs nodes on its own, with no VFS call
behind it, and removal cannot always unhash the dentries that are
already cached. So -&gt;d_revalidate() is what keeps the cache honest,
let's add tests for it.

Add tests that make the kernel change kernfs directly, instead of going
through create and unlink:

 - writing cgroup.subtree_control makes the kernel add and remove files
   in every child cgroup. That checks two things: a cached negative
   dentry is dropped once the file appears, and a cached positive one
   is dropped once the file goes away.
 - renaming a network interface renames the sysfs node under a dentry
   that is already cached.
 - sysfs mounted in a new network namespace must list that namespace's
   interfaces and not the parent's, which covers the KERNFS_NS tagging
   code.
 - many lookups running against concurrent mkdir and rmdir. A lookup
   may only succeed or fail with an errno that means "it is gone".
 - open across removal, readdir returning each entry once, and a
   telldir()/seekdir() round trip, which uses the name hash cookie in
   kernfs_dir_pos().

Test the other direction too: walking dentries that are already cached
must not drop them. That is not just a slowdown. d_invalidate() calls
detach_mounts(), so a dentry dropped by mistake also unmounts whatever
is mounted under that directory.

Both filesystems are needed. cgroup2 has no -&gt;rename and is not
namespace tagged. sysfs cannot be mounted with a set of children we
control. The config fragment stops a kernel built with kselftest-merge
from passing while it runs almost nothing.

To confirm the tests really catch a broken backstop, kernfs_dir_changed()
was stubbed to return false. 8 of the 11 tests then failed.

Signed-off-by: Shakeel Butt &lt;shakeel.butt@linux.dev&gt;
Link: https://patch.msgid.link/20260902014050.499002-1-shakeel.butt@linux.dev
Signed-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;
</content>
</entry>
<entry>
<title>selftests/fuse: add test for FUSE_HAS_SYNCFS privilege gating</title>
<updated>2026-09-02T07:36:07+00:00</updated>
<author>
<name>Jimmy Zuber</name>
<email>jamz@amazon.com</email>
</author>
<published>2026-08-20T13:01:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.landau.one/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=a6ca1a573e1fd9474c6226412fb743b4ef7e3472'/>
<id>urn:sha1:a6ca1a573e1fd9474c6226412fb743b4ef7e3472</id>
<content type='text'>
Add a selftest that talks the raw FUSE protocol over /dev/fuse (rather
than via libfuse, which negotiates INIT internally) so it can both choose
whether to advertise FUSE_HAS_SYNCFS and directly observe whether a
FUSE_SYNCFS opcode is forwarded by the kernel.

Three cases are covered:

  T1: host-root mount, server sets FUSE_HAS_SYNCFS
      -&gt; FUSE_SYNCFS must reach the server.
  T2: host-root mount, server does not opt in
      -&gt; FUSE_SYNCFS must not be sent (back-compat).
  T3: server opts in but opened /dev/fuse without CAP_SYS_ADMIN while still
      in the initial user namespace
      -&gt; FUSE_SYNCFS must be withheld.  This is the case that distinguishes
         gating on the server's privilege from gating on the mount's user
         namespace.

Signed-off-by: Jimmy Zuber &lt;jamz@amazon.com&gt;
Assisted-by: Claude:claude-opus-4-8 [Claude-Code]
Signed-off-by: Miklos Szeredi &lt;mszeredi@redhat.com&gt;
</content>
</entry>
</feed>
