Re: [PATCH 00/24] vfs: require filesystems to explicitly opt-in to lease support
Jan Kara <[email protected]>
| Newsgroups | dev.linux.lists.gfs2,dev.linux.lists.ntfs3,dev.linux.lists.ocfs2-devel,dev.linux.lists.v9fs,net.sourceforge.lists.linux-f2fs-devel,org.infradead.lists.linux-mtd,org.kernel.vger.ceph-devel,org.kernel.vger.linux-btrfs,org.kernel.vger.linux-cifs,org.kernel.vger.linux-doc,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs,org.kernel.vger.linux-nilfs,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-xfs,org.kvack.linux-mm,org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <m3mywef74xhcakianlrovrnaadnhzhfqjfusulkcnyioforfml@j2xnk7dzkmv4> |
On Thu 08-01-26 12:12:55, Jeff Layton wrote: > 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. So, what about kernfs and fuse? They seem to be exportable and don't have .setlease set... Honza > > [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]> > -- Jan Kara <[email protected]> SUSE Labs, CR