mbox series

[00/23] nfs: Mount API conversion

Message ID 155862813755.26654.563679411147031501.stgit@warthog.procyon.org.uk
Headers show
Series nfs: Mount API conversion | expand


David Howells May 23, 2019, 4:15 p.m. UTC
Hi Trond, Anna,

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 me and some from Al.  The
actual conversion is done by the final patch.

I've rebased them on 5.2-rc1.  Do you want them basing on something else?

The patches can be found here also:


on branch:


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.

 fs/nfs/Makefile         |    3 
 fs/nfs/client.c         |   78 +-
 fs/nfs/fs_context.c     | 1409 ++++++++++++++++++++++++++++++++++
 fs/nfs/fscache.c        |    2 
 fs/nfs/getroot.c        |   73 +-
 fs/nfs/internal.h       |  132 ++-
 fs/nfs/namespace.c      |  144 ++-
 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     |   97 +-
 fs/nfs/nfs4namespace.c  |  285 ++++---
 fs/nfs/nfs4proc.c       |    2 
 fs/nfs/nfs4super.c      |  257 ++----
 fs/nfs/proc.c           |    2 
 fs/nfs/super.c          | 1950 ++++-------------------------------------------
 include/linux/nfs_xdr.h |    9 
 18 files changed, 2138 insertions(+), 2324 deletions(-)
 create mode 100644 fs/nfs/fs_context.c


Al Viro May 25, 2019, 11:08 p.m. UTC | #1
On Thu, May 23, 2019 at 05:19:05PM +0100, David Howells wrote:

>  out_no_data:
> -	dfprintk(MOUNT, "NFS: mount program didn't pass any mount data\n");
> -	return -EINVAL;
> +	if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) {
> +		ctx->skip_reconfig_option_check = true;
> +		return 0;
> +	}

That really ought to be
	if (fc->root) { /* remount */
		ctx->skip_reconfig_option_check = true;
		return 0;
and similar in the v4 counterpart.  fc->purpose is a bad idea; it is
possible to get rid of it.

Frankly, I'm tempted to add

static inline bool is_remount_fc(struct fs_context *fc)
	return fc->root != NULL;

and just use that in such places...
David Howells June 6, 2019, 9:41 a.m. UTC | #2
Schumaker, Anna <Anna.Schumaker@netapp.com> wrote:

> >  17 files changed, 1293 insertions(+), 1331 deletions(-)
> Can you please split this patch up?

Um...  Al and I have split it up somewhat.  See the other 22 patches in the
series ;-)

Splitting it up further is going to be tricky because of the way stuff weaves
around all over the place in fs/nfs/.  I can have a go, but, for various
reasons, I'm not going to have time to look at that till after the next merge
window.  I don't know whether SteveD has a sufficiently empty plate to offload
that to him?

> The mailing list dropped it because it's over 100,000 characters
> (http://vger.kernel.org/majordomo-info.html#taboo) and I can't use the
> version you sent directly to me because Office365 / Evolution keeps
> converting tabs to spaces somewhere along the line.

Note also this bit in the cover letter:

	The patches can be found here also:


	on branch: