From e4328bb8d13ae6dda33308557e6bbb352d5674bb Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Tue, 3 Nov 2009 11:16:30 -0500 Subject: [PATCH] mount.nfs: Assume v2/v3 if mount-related options are present Don't try NFSv4 if any MNT protocol related options were presented by the user. Signed-off-by: Chuck Lever Signed-off-by: Steve Dickson --- utils/mount/stropts.c | 49 ++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index 3a2a237..4c9ee17 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -278,6 +278,40 @@ static int nfs_append_sloppy_option(struct mount_options *options) return 1; } +static int nfs_set_version(struct nfsmount_info *mi) +{ + if (!nfs_nfs_version(mi->options, &mi->version)) + return 0; + + if (strncmp(mi->type, "nfs4", 4) == 0) + mi->version = 4; + else { + char *option = po_get(mi->options, "proto"); + if (option && strcmp(option, "rdma") == 0) + mi->version = 3; + } + + /* + * If we still don't know, check for version-specific + * mount options. + */ + if (mi->version == 0) { + if (po_contains(mi->options, "mounthost") || + po_contains(mi->options, "mountaddr") || + po_contains(mi->options, "mountvers") || + po_contains(mi->options, "mountproto")) + mi->version = 3; + } + + /* + * If enabled, see if the default version was + * set in the config file + */ + nfs_default_version(mi); + + return 1; +} + /* * Set up mandatory non-version specific NFS mount options. * @@ -294,21 +328,8 @@ static int nfs_validate_options(struct nfsmount_info *mi) if (!nfs_name_to_address(mi->hostname, sap, &mi->salen)) return 0; - if (!nfs_nfs_version(mi->options, &mi->version)) + if (!nfs_set_version(mi)) return 0; - if (strncmp(mi->type, "nfs4", 4) == 0) - mi->version = 4; - else { - char *option = po_get(mi->options, "proto"); - if (option && strcmp(option, "rdma") == 0) - mi->version = 3; - } - - /* - * If enabled, see if the default version was - * set in the config file - */ - nfs_default_version(mi); if (!nfs_append_sloppy_option(mi->options)) return 0; -- 2.39.2