On Nov 30, 2010, at 1:54 AM, Mi Jinlong wrote: > > > Chuck Lever : >> On Nov 25, 2010, at 12:54 AM, Mi Jinlong wrote: >> >>> When user's nfs client(kernel) don't support NFSv4, maybe they build >>> kernel without NFSv4, there is a problem. >>> >>> When using command "mount SERVER-IP:/nfsv3 /mnt/" to mount NFSv3 >>> filesystem, mount will fail and get error: >>> >>> "mount.nfs: an incorrect mount option was specified" >>> >>> as above, the mount should success, but it fail. >>> >>> When the mount command without specific NFS version, nfs-utils will >>> try to mount NFSv4 at first, but the kernel don't support, the kernel >>> will return with error EINVAL for parsing option (vers=4) fail. >> >> Maybe the kernel should return EOPNOTSUPP in that case? > > Yes, what about the following patch. Seems logical to me. Up to Trond... > > -- > thanks > Mi Jinlong > --------------------------------------------------------------------------------- > From 4065f2571362ff301683218546151e19148fa775 Mon Sep 17 00:00:00 2001 > From: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx> > Date: Sat, 30 Oct 2010 10:19:33 +0800 > Subject: [PATCH] nfs: kernel should return EPROTONOSUPPORT when not support NFSv4 > > When nfs client(kernel) don't support NFSv4, maybe user build > kernel without NFSv4, there is a problem. > > Using command "mount SERVER-IP:/nfsv3 /mnt/" to mount NFSv3 > filesystem, mount should should success, but fail and get error: > > "mount.nfs: an incorrect mount option was specified" > > System call mount "nfs"(not "nfs4") with "vers=4", > if CONFIG_NFS_V4 is not defined, the "vers=4" will be parsed > as invalid argument and kernel return EINVAL to nfs-utils. > > About that, we really want get EPROTONOSUPPORT rather than > EINVAL. This path make sure kernel parses argument success, > and return EPROTONOSUPPORT at nfs_validate_mount_data(). > > Signed-off-by: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx> > --- > fs/nfs/super.c | 4 ---- > 1 files changed, 0 insertions(+), 4 deletions(-) > > diff --git a/fs/nfs/super.c b/fs/nfs/super.c > index 3c04504..4100630 100644 > --- a/fs/nfs/super.c > +++ b/fs/nfs/super.c > @@ -1069,12 +1069,10 @@ static int nfs_parse_mount_options(char *raw, > mnt->flags |= NFS_MOUNT_VER3; > mnt->version = 3; > break; > -#ifdef CONFIG_NFS_V4 > case Opt_v4: > mnt->flags &= ~NFS_MOUNT_VER3; > mnt->version = 4; > break; > -#endif > case Opt_udp: > mnt->flags &= ~NFS_MOUNT_TCP; > mnt->nfs_server.protocol = XPRT_TRANSPORT_UDP; > @@ -1286,12 +1284,10 @@ static int nfs_parse_mount_options(char *raw, > mnt->flags |= NFS_MOUNT_VER3; > mnt->version = 3; > break; > -#ifdef CONFIG_NFS_V4 > case NFS4_VERSION: > mnt->flags &= ~NFS_MOUNT_VER3; > mnt->version = 4; > break; > -#endif > default: > goto out_invalid_value; > } > -- > 1.7.3.2 > > -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html