Yesterday, I sent patches to fix how directory delegation support is handled on filesystems where the should be disabled [1]. That set is appropriate for v6.19. For v7.0, I want to make lease support be more opt-in, rather than opt-out:
For historical reasons, when ->setlease() file_operation is set to NULL, the default is to use the kernel-internal lease implementation. This means that if you want to disable them, you need to explicitly set the ->setlease() file_operation to simple_nosetlease() or the equivalent. This has caused a number of problems over the years as some filesystems have inadvertantly allowed leases to be acquired simply by having left it set to NULL. It would be better if filesystems had to opt-in to lease support, particularly with the advent of directory delegations. This series has sets the ->setlease() operation in a pile of existing local filesystems to generic_setlease() and then changes kernel_setlease() to return -EINVAL when the setlease() operation is not set. With this change, new filesystems will need to explicitly set the ->setlease() operations in order to provide lease and delegation support. I mainly focused on filesystems that are NFS exportable, since NFS and SMB are the main users of file leases, and they tend to end up exporting the same filesystem types. Let me know if I've missed any. [1]: https://lore.kernel.org/linux-fsdevel/[email protected]/ Signed-off-by: Jeff Layton <[email protected]> --- Jeff Layton (24): fs: add setlease to generic_ro_fops and read-only filesystem directory operations affs: add setlease file operation btrfs: add setlease file operation erofs: add setlease file operation ext2: add setlease file operation ext4: add setlease file operation exfat: add setlease file operation f2fs: add setlease file operation fat: add setlease file operation gfs2: add a setlease file operation jffs2: add setlease file operation jfs: add setlease file operation nilfs2: add setlease file operation ntfs3: add setlease file operation ocfs2: add setlease file operation orangefs: add setlease file operation overlayfs: add setlease file operation squashfs: add setlease file operation tmpfs: add setlease file operation udf: add setlease file operation ufs: add setlease file operation xfs: add setlease file operation filelock: default to returning -EINVAL when ->setlease operation is NULL fs: remove simple_nosetlease() Documentation/filesystems/porting.rst | 9 +++++++++ Documentation/filesystems/vfs.rst | 9 ++++++--- fs/9p/vfs_dir.c | 2 -- fs/9p/vfs_file.c | 2 -- fs/affs/dir.c | 2 ++ fs/affs/file.c | 2 ++ fs/befs/linuxvfs.c | 2 ++ fs/btrfs/file.c | 2 ++ fs/btrfs/inode.c | 2 ++ fs/ceph/dir.c | 2 -- fs/ceph/file.c | 1 - fs/cramfs/inode.c | 2 ++ fs/efs/dir.c | 2 ++ fs/erofs/data.c | 2 ++ fs/erofs/dir.c | 2 ++ fs/exfat/dir.c | 2 ++ fs/exfat/file.c | 2 ++ fs/ext2/dir.c | 2 ++ fs/ext2/file.c | 2 ++ fs/ext4/dir.c | 2 ++ fs/ext4/file.c | 2 ++ fs/f2fs/dir.c | 2 ++ fs/f2fs/file.c | 2 ++ fs/fat/dir.c | 2 ++ fs/fat/file.c | 2 ++ fs/freevxfs/vxfs_lookup.c | 2 ++ fs/fuse/dir.c | 1 - fs/gfs2/file.c | 3 +-- fs/isofs/dir.c | 2 ++ fs/jffs2/dir.c | 2 ++ fs/jffs2/file.c | 2 ++ fs/jfs/file.c | 2 ++ fs/jfs/namei.c | 2 ++ fs/libfs.c | 20 ++------------------ fs/locks.c | 3 +-- fs/nfs/dir.c | 1 - fs/nfs/file.c | 1 - fs/nilfs2/dir.c | 3 ++- fs/nilfs2/file.c | 2 ++ fs/ntfs3/dir.c | 3 +++ fs/ntfs3/file.c | 3 +++ fs/ocfs2/file.c | 5 +++++ fs/orangefs/dir.c | 4 +++- fs/orangefs/file.c | 1 + fs/overlayfs/file.c | 2 ++ fs/overlayfs/readdir.c | 2 ++ fs/qnx4/dir.c | 2 ++ fs/qnx6/dir.c | 2 ++ fs/read_write.c | 2 ++ fs/smb/client/cifsfs.c | 1 - fs/squashfs/dir.c | 2 ++ fs/squashfs/file.c | 4 +++- fs/udf/dir.c | 2 ++ fs/udf/file.c | 2 ++ fs/ufs/dir.c | 2 ++ fs/ufs/file.c | 2 ++ fs/vboxsf/dir.c | 1 - fs/vboxsf/file.c | 1 - fs/xfs/xfs_file.c | 3 +++ include/linux/fs.h | 1 - mm/shmem.c | 2 ++ 61 files changed, 116 insertions(+), 42 deletions(-) --- base-commit: 731ce71a6c8adb8b8f873643beacaeedc1564500 change-id: 20260107-setlease-6-20-299eb5695c5a Best regards, -- Jeff Layton <[email protected]>
