Message ID | 20191210123115.1655-1-smayhew@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | nfs: Mount API conversion | expand |
Hi Scott, On Tue, 2019-12-10 at 07:30 -0500, Scott Mayhew wrote: > Hi Anna, Trond, > > Here's a set of patches that converts NFS to use the mount API. Note that > there are a lot of preliminary patches, some from David and some from Al. > The final patch (the one that does the actual conversion) from the David's > initial posting has been split into 5 separate patches, and the entire set > has been rebased on top of v5.5-rc1. Thanks for the updated patches! Everything looks okay to me, but I've only tested with the legacy mount command. I'm curious if you've tested it using the new system? Thanks, Anna > > Changes since v5: > - fixed possible derefence of error pointer in nfs4_validate_fspath() > reported by Dan Carpenter > - rebased on top of v5.5-rc1 > Changes since v4: > - further split the original "NFS: Add fs_context support" patch (new > patch is about 25% smaller than the v4 patch) > - fixed NFSv4 referral mounts (broken in the original patch) > - fixed leak of nfs_fattr when fs_context is freed > Changes since v3: > - changed license and copyright text in fs/nfs/fs_context.c > Changes since v2: > - fixed the conversion of the nconnect= option > - added '#if IS_ENABLED(CONFIG_NFS_V4)' around nfs4_parse_monolithic() > to avoid unused-function warning when compiling with v4 disabled > Chagnes since v1: > - split up patch 23 into 4 separate patches > > -Scott > > Al Viro (15): > saner calling conventions for nfs_fs_mount_common() > nfs: stash server into struct nfs_mount_info > nfs: lift setting mount_info from nfs4_remote{,_referral}_mount > nfs: fold nfs4_remote_fs_type and nfs4_remote_referral_fs_type > nfs: don't bother setting/restoring export_path around > do_nfs_root_mount() > nfs4: fold nfs_do_root_mount/nfs_follow_remote_path > nfs: lift setting mount_info from nfs_xdev_mount() > nfs: stash nfs_subversion reference into nfs_mount_info > nfs: don't bother passing nfs_subversion to ->try_mount() and > nfs_fs_mount_common() > nfs: merge xdev and remote file_system_type > nfs: unexport nfs_fs_mount_common() > nfs: don't pass nfs_subversion to ->create_server() > nfs: get rid of mount_info ->fill_super() > nfs_clone_sb_security(): simplify the check for server bogosity > nfs: get rid of ->set_security() > > David Howells (8): > NFS: Move mount parameterisation bits into their own file > NFS: Constify mount argument match tables > NFS: Rename struct nfs_parsed_mount_data to struct nfs_fs_context > NFS: Split nfs_parse_mount_options() > NFS: Deindent nfs_fs_context_parse_option() > NFS: Add a small buffer in nfs_fs_context to avoid string dup > NFS: Do some tidying of the parsing code > NFS: Add fs_context support. > > Scott Mayhew (4): > NFS: rename nfs_fs_context pointer arg in a few functions > NFS: Convert mount option parsing to use functionality from > fs_parser.h > NFS: Additional refactoring for fs_context conversion > NFS: Attach supplementary error information to fs_context. > > fs/nfs/Makefile | 2 +- > fs/nfs/client.c | 80 +- > fs/nfs/fs_context.c | 1424 +++++++++++++++++++++++++ > fs/nfs/fscache.c | 2 +- > fs/nfs/getroot.c | 73 +- > fs/nfs/internal.h | 132 +-- > fs/nfs/namespace.c | 146 ++- > fs/nfs/nfs3_fs.h | 2 +- > fs/nfs/nfs3client.c | 6 +- > fs/nfs/nfs3proc.c | 2 +- > fs/nfs/nfs4_fs.h | 9 +- > fs/nfs/nfs4client.c | 99 +- > fs/nfs/nfs4file.c | 1 + > fs/nfs/nfs4namespace.c | 292 +++--- > fs/nfs/nfs4proc.c | 2 +- > fs/nfs/nfs4super.c | 257 ++--- > fs/nfs/proc.c | 2 +- > fs/nfs/super.c | 2217 +++++---------------------------------- > include/linux/nfs_xdr.h | 9 +- > 19 files changed, 2287 insertions(+), 2470 deletions(-) > create mode 100644 fs/nfs/fs_context.c >
On Tue, 10 Dec 2019, Schumaker, Anna wrote: > Hi Scott, > > On Tue, 2019-12-10 at 07:30 -0500, Scott Mayhew wrote: > > Hi Anna, Trond, > > > > Here's a set of patches that converts NFS to use the mount API. Note that > > there are a lot of preliminary patches, some from David and some from Al. > > The final patch (the one that does the actual conversion) from the David's > > initial posting has been split into 5 separate patches, and the entire set > > has been rebased on top of v5.5-rc1. > > Thanks for the updated patches! Everything looks okay to me, but I've only > tested with the legacy mount command. I'm curious if you've tested it using the > new system? My testing was also with the legacy mount command. I can work on testing with the new syscalls now. -Scott > > Thanks, > Anna > > > > > Changes since v5: > > - fixed possible derefence of error pointer in nfs4_validate_fspath() > > reported by Dan Carpenter > > - rebased on top of v5.5-rc1 > > Changes since v4: > > - further split the original "NFS: Add fs_context support" patch (new > > patch is about 25% smaller than the v4 patch) > > - fixed NFSv4 referral mounts (broken in the original patch) > > - fixed leak of nfs_fattr when fs_context is freed > > Changes since v3: > > - changed license and copyright text in fs/nfs/fs_context.c > > Changes since v2: > > - fixed the conversion of the nconnect= option > > - added '#if IS_ENABLED(CONFIG_NFS_V4)' around nfs4_parse_monolithic() > > to avoid unused-function warning when compiling with v4 disabled > > Chagnes since v1: > > - split up patch 23 into 4 separate patches > > > > -Scott > > > > Al Viro (15): > > saner calling conventions for nfs_fs_mount_common() > > nfs: stash server into struct nfs_mount_info > > nfs: lift setting mount_info from nfs4_remote{,_referral}_mount > > nfs: fold nfs4_remote_fs_type and nfs4_remote_referral_fs_type > > nfs: don't bother setting/restoring export_path around > > do_nfs_root_mount() > > nfs4: fold nfs_do_root_mount/nfs_follow_remote_path > > nfs: lift setting mount_info from nfs_xdev_mount() > > nfs: stash nfs_subversion reference into nfs_mount_info > > nfs: don't bother passing nfs_subversion to ->try_mount() and > > nfs_fs_mount_common() > > nfs: merge xdev and remote file_system_type > > nfs: unexport nfs_fs_mount_common() > > nfs: don't pass nfs_subversion to ->create_server() > > nfs: get rid of mount_info ->fill_super() > > nfs_clone_sb_security(): simplify the check for server bogosity > > nfs: get rid of ->set_security() > > > > David Howells (8): > > NFS: Move mount parameterisation bits into their own file > > NFS: Constify mount argument match tables > > NFS: Rename struct nfs_parsed_mount_data to struct nfs_fs_context > > NFS: Split nfs_parse_mount_options() > > NFS: Deindent nfs_fs_context_parse_option() > > NFS: Add a small buffer in nfs_fs_context to avoid string dup > > NFS: Do some tidying of the parsing code > > NFS: Add fs_context support. > > > > Scott Mayhew (4): > > NFS: rename nfs_fs_context pointer arg in a few functions > > NFS: Convert mount option parsing to use functionality from > > fs_parser.h > > NFS: Additional refactoring for fs_context conversion > > NFS: Attach supplementary error information to fs_context. > > > > fs/nfs/Makefile | 2 +- > > fs/nfs/client.c | 80 +- > > fs/nfs/fs_context.c | 1424 +++++++++++++++++++++++++ > > fs/nfs/fscache.c | 2 +- > > fs/nfs/getroot.c | 73 +- > > fs/nfs/internal.h | 132 +-- > > fs/nfs/namespace.c | 146 ++- > > fs/nfs/nfs3_fs.h | 2 +- > > fs/nfs/nfs3client.c | 6 +- > > fs/nfs/nfs3proc.c | 2 +- > > fs/nfs/nfs4_fs.h | 9 +- > > fs/nfs/nfs4client.c | 99 +- > > fs/nfs/nfs4file.c | 1 + > > fs/nfs/nfs4namespace.c | 292 +++--- > > fs/nfs/nfs4proc.c | 2 +- > > fs/nfs/nfs4super.c | 257 ++--- > > fs/nfs/proc.c | 2 +- > > fs/nfs/super.c | 2217 +++++---------------------------------- > > include/linux/nfs_xdr.h | 9 +- > > 19 files changed, 2287 insertions(+), 2470 deletions(-) > > create mode 100644 fs/nfs/fs_context.c > >
On Tue, 10 Dec 2019, Schumaker, Anna wrote: > Hi Scott, > > On Tue, 2019-12-10 at 07:30 -0500, Scott Mayhew wrote: > > Hi Anna, Trond, > > > > Here's a set of patches that converts NFS to use the mount API. Note that > > there are a lot of preliminary patches, some from David and some from Al. > > The final patch (the one that does the actual conversion) from the David's > > initial posting has been split into 5 separate patches, and the entire set > > has been rebased on top of v5.5-rc1. > > Thanks for the updated patches! Everything looks okay to me, but I've only > tested with the legacy mount command. I'm curious if you've tested it using the > new system? I've hacked up mount.nfs for testing the new syscalls (for mounting... I haven't quite figured out remounting yet) here: https://github.com/scottmayhew/nfs-utils/tree/fscontext It seems to be working okay, with one exception. If I mount the same NFS export with the same mount options multiple times, then I get multiple mounts: [root@fedora30 ~]# mount.nfs nfs:/export /mnt/t [root@fedora30 ~]# mount.nfs nfs:/export /mnt/t [root@fedora30 ~]# grep /mnt/t /proc/mounts nfs:/export /mnt/t nfs rw,seclabel,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=192.168.122.239,local_lock=none,addr=192.168.122.3 0 0 nfs:/export /mnt/t nfs rw,seclabel,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=192.168.122.239,local_lock=none,addr=192.168.122.3 0 0 That doesn't happen with the mount() syscall: [root@fedora30 ~]# mount.nfs.old nfs:/export /mnt/t [root@fedora30 ~]# mount.nfs.old nfs:/export /mnt/t [root@fedora30 ~]# grep /mnt/t /proc/mounts nfs:/export /mnt/t nfs rw,seclabel,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=krb5,clientaddr=192.168.122.239,local_lock=none,addr=192.168.122.3 0 0 -Scott > > Thanks, > Anna > > > > > Changes since v5: > > - fixed possible derefence of error pointer in nfs4_validate_fspath() > > reported by Dan Carpenter > > - rebased on top of v5.5-rc1 > > Changes since v4: > > - further split the original "NFS: Add fs_context support" patch (new > > patch is about 25% smaller than the v4 patch) > > - fixed NFSv4 referral mounts (broken in the original patch) > > - fixed leak of nfs_fattr when fs_context is freed > > Changes since v3: > > - changed license and copyright text in fs/nfs/fs_context.c > > Changes since v2: > > - fixed the conversion of the nconnect= option > > - added '#if IS_ENABLED(CONFIG_NFS_V4)' around nfs4_parse_monolithic() > > to avoid unused-function warning when compiling with v4 disabled > > Chagnes since v1: > > - split up patch 23 into 4 separate patches > > > > -Scott > > > > Al Viro (15): > > saner calling conventions for nfs_fs_mount_common() > > nfs: stash server into struct nfs_mount_info > > nfs: lift setting mount_info from nfs4_remote{,_referral}_mount > > nfs: fold nfs4_remote_fs_type and nfs4_remote_referral_fs_type > > nfs: don't bother setting/restoring export_path around > > do_nfs_root_mount() > > nfs4: fold nfs_do_root_mount/nfs_follow_remote_path > > nfs: lift setting mount_info from nfs_xdev_mount() > > nfs: stash nfs_subversion reference into nfs_mount_info > > nfs: don't bother passing nfs_subversion to ->try_mount() and > > nfs_fs_mount_common() > > nfs: merge xdev and remote file_system_type > > nfs: unexport nfs_fs_mount_common() > > nfs: don't pass nfs_subversion to ->create_server() > > nfs: get rid of mount_info ->fill_super() > > nfs_clone_sb_security(): simplify the check for server bogosity > > nfs: get rid of ->set_security() > > > > David Howells (8): > > NFS: Move mount parameterisation bits into their own file > > NFS: Constify mount argument match tables > > NFS: Rename struct nfs_parsed_mount_data to struct nfs_fs_context > > NFS: Split nfs_parse_mount_options() > > NFS: Deindent nfs_fs_context_parse_option() > > NFS: Add a small buffer in nfs_fs_context to avoid string dup > > NFS: Do some tidying of the parsing code > > NFS: Add fs_context support. > > > > Scott Mayhew (4): > > NFS: rename nfs_fs_context pointer arg in a few functions > > NFS: Convert mount option parsing to use functionality from > > fs_parser.h > > NFS: Additional refactoring for fs_context conversion > > NFS: Attach supplementary error information to fs_context. > > > > fs/nfs/Makefile | 2 +- > > fs/nfs/client.c | 80 +- > > fs/nfs/fs_context.c | 1424 +++++++++++++++++++++++++ > > fs/nfs/fscache.c | 2 +- > > fs/nfs/getroot.c | 73 +- > > fs/nfs/internal.h | 132 +-- > > fs/nfs/namespace.c | 146 ++- > > fs/nfs/nfs3_fs.h | 2 +- > > fs/nfs/nfs3client.c | 6 +- > > fs/nfs/nfs3proc.c | 2 +- > > fs/nfs/nfs4_fs.h | 9 +- > > fs/nfs/nfs4client.c | 99 +- > > fs/nfs/nfs4file.c | 1 + > > fs/nfs/nfs4namespace.c | 292 +++--- > > fs/nfs/nfs4proc.c | 2 +- > > fs/nfs/nfs4super.c | 257 ++--- > > fs/nfs/proc.c | 2 +- > > fs/nfs/super.c | 2217 +++++---------------------------------- > > include/linux/nfs_xdr.h | 9 +- > > 19 files changed, 2287 insertions(+), 2470 deletions(-) > > create mode 100644 fs/nfs/fs_context.c > >