vfs: get rid of old '->iterate' directory operation
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 5 Aug 2023 19:25:01 +0000 (12:25 -0700)
committerChristian Brauner <brauner@kernel.org>
Sun, 6 Aug 2023 13:08:35 +0000 (15:08 +0200)
commit3e3271549670783be20e233a2b78a87a0b04c715
treed69b551046ccb83118f1f84479a461956fd35e4d
parent0a2c2baafa312ac4cec4f0bababedab3f971f224
vfs: get rid of old '->iterate' directory operation

All users now just use '->iterate_shared()', which only takes the
directory inode lock for reading.

Filesystems that never got convered to shared mode now instead use a
wrapper that drops the lock, re-takes it in write mode, calls the old
function, and then downgrades the lock back to read mode.

This way the VFS layer and other callers no longer need to care about
filesystems that never got converted to the modern era.

The filesystems that use the new wrapper are ceph, coda, exfat, jfs,
ntfs, ocfs2, overlayfs, and vboxsf.

Honestly, several of them look like they really could just iterate their
directories in shared mode and skip the wrapper entirely, but the point
of this change is to not change semantics or fix filesystems that
haven't been fixed in the last 7+ years, but to finally get rid of the
dual iterators.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
13 files changed:
Documentation/filesystems/locking.rst
Documentation/filesystems/porting.rst
fs/ceph/dir.c
fs/coda/dir.c
fs/exfat/dir.c
fs/exportfs/expfs.c
fs/jfs/namei.c
fs/ntfs/dir.c
fs/ocfs2/file.c
fs/overlayfs/readdir.c
fs/readdir.c
fs/vboxsf/dir.c
include/linux/fs.h