[PATCH 3/3] mount.nfs: Detect "-t nfs -o vers=4" mounts

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

 



For "-t nfs -o vers=4" mounts, we want to skip v2/v3 version/transport
negotiation, but be sure to append the "clientaddr" option.

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

 utils/mount/network.c |    2 +-
 utils/mount/network.h |    1 +
 utils/mount/stropts.c |   10 ++++++++--
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/utils/mount/network.c b/utils/mount/network.c
index 420e15a..bd621be 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -1204,7 +1204,7 @@ nfs_nfs_program(struct mount_options *options, unsigned long *program)
  * Returns TRUE if @version contains a valid value for this option,
  * or FALSE if the option was specified with an invalid value.
  */
-static int
+int
 nfs_nfs_version(struct mount_options *options, unsigned long *version)
 {
 	long tmp;
diff --git a/utils/mount/network.h b/utils/mount/network.h
index db5134c..402e0a5 100644
--- a/utils/mount/network.h
+++ b/utils/mount/network.h
@@ -56,6 +56,7 @@ int clnt_ping(struct sockaddr_in *, const unsigned long,
 
 struct mount_options;
 
+int nfs_nfs_version(struct mount_options *options, unsigned long *version);
 int nfs_options2pmap(struct mount_options *,
 		      struct pmap *, struct pmap *);
 
diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index a12ace7..3eb661e 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -84,6 +84,7 @@ struct nfsmount_info {
 	struct mount_options	*options;	/* parsed mount options */
 	char			**extra_opts;	/* string for /etc/mtab */
 
+	unsigned long		version;	/* NFS version */
 	int			flags,		/* MS_ flags */
 				fake,		/* actually do the mount? */
 				child;		/* forked bg child? */
@@ -272,7 +273,12 @@ static int nfs_validate_options(struct nfsmount_info *mi)
 	if (!nfs_name_to_address(mi->hostname, sap, &salen))
 		return 0;
 
-	if (strncmp(mi->type, "nfs4", 4) == 0) {
+	if (!nfs_nfs_version(mi->options, &mi->version))
+		return 0;
+	if (strncmp(mi->type, "nfs4", 4) == 0)
+		mi->version = 4;
+
+	if (mi->version == 4) {
 		if (!nfs_append_clientaddr_option(sap, salen, mi->options))
 			return 0;
 	} else {
@@ -488,7 +494,7 @@ static int nfs_try_mount(struct nfsmount_info *mi)
 	char *options = NULL;
 	int result;
 
-	if (strncmp(mi->type, "nfs4", 4) != 0) {
+	if (mi->version != 4) {
 		if (!nfs_rewrite_pmap_mount_options(mi->options))
 			return 0;
 	}

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