On Thu, Oct 19, 2023 at 5:40 PM Jan Kara <jack@xxxxxxx> wrote: > > On Wed 18-10-23 12:59:58, Amir Goldstein wrote: > > export_operations ->encode_fh() no longer has a default implementation to > > encode FILEID_INO32_GEN* file handles. > > > > Rename the default helper for encoding FILEID_INO32_GEN* file handles to > > generic_encode_ino32_fh() and convert the filesystems that used the > > default implementation to use the generic helper explicitly. > > > > This is a step towards allowing filesystems to encode non-decodeable file > > handles for fanotify without having to implement any export_operations. > > > > Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> > > Just one typo cleanup. Also I agree we need a "nop" variant of > generic_encode_ino32_fh() or move this to fs/libfs.c like e.g. > generic_fh_to_dentry(). > I did this: /* * Generic helpers for filesystems. */ +#ifdef CONFIG_EXPORTFS +int generic_encode_ino32_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *parent); +#else +#define generic_encode_ino32_fh NULL +#endif I like it better than moving to fs/libfs.c, because if CONFIG_EXPORTFS is not defined, no code should be calling generic_encode_ino32_fh(). It might be a good idea to define exportfs_can_*() helpers to false when CONFIG_EXPORTFS is not defined, but at least for fanotify, this is not relevant because fanotify selects EXPORTFS. > > diff --git a/Documentation/filesystems/porting.rst b/Documentation/filesystems/porting.rst > > index 4d05b9862451..197ef78a5014 100644 > > --- a/Documentation/filesystems/porting.rst > > +++ b/Documentation/filesystems/porting.rst > > @@ -1045,3 +1045,12 @@ filesystem type is now moved to a later point when the devices are closed: > > As this is a VFS level change it has no practical consequences for filesystems > > other than that all of them must use one of the provided kill_litter_super(), > > kill_anon_super(), or kill_block_super() helpers. > > + > > +--- > > + > > +**mandatory** > > + > > +export_operations ->encode_fh() no longer has a default implementation to > > +encode FILEID_INO32_GEN* file handles. > > +Fillesystems that used the default implementation may use the generic helper > ^^^ Filesystems > Thanks! Amir.