Re: [PATCH 2/2] mount.nfs: Assume v2/v3 if mount-related options are present

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

 




On Oct 8, 2009, at 1:45 PM, Trond Myklebust wrote:

On Thu, 2009-10-08 at 13:37 -0400, Chuck Lever wrote:
Don't try NFSv4 if any MNT protocol related options were presented by
the user.

Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
---

utils/mount/stropts.c |    7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 0685caa..3401f63 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -564,6 +564,13 @@ static int nfs_try_mount_v4(struct nfsmount_info *mi)
	}

	if (mi->version == 0) {
+		if (po_contains(options, "mounthost") ||
+		    po_contains(options, "mountaddr") ||
+		    po_contains(options, "mountvers") ||
+		    po_contains(options, "mountproto")) {
+			errno = EPROTONOSUPPORT;

Shouldn't this be EINVAL ?

Since this is behind the mi->version == 0 check, we know that the user didn't specify an NFS version. In any other v4 case, the kernel's mount option parser will kick these out with EINVAL. But here, we just want to avoid trying to negotiate NFSv4. So the EPROTONOSUPPORT return code will cause the logic in nfs_try_mount() to try v3/v2 next.

Basically the bug is this: before, if I didn't specify an NFS version, but added some mountfoo= option, the mount.nfs command will try negotiating NFSv2/v3. Now, it will try NFSv4 first, but these are illegal options for NFSv4, and the mount command will fail. So, regression. This new logic simply skips trying NFSv4 in this case.


+			goto out_fail;
+		}
		if (po_append(options, "vers=4") == PO_FAILED) {
			errno = EINVAL;
			goto out_fail;

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



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

[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