Re: [PATCH] mount: make sure mount correctly when kernel not support NFSv4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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.

--
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


--
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


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux