[PATCH 3/4] text-based mount: Set addr= option in nfs_try_mount_foo()

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

 



When retrying a mount request with a different server address, the
addr= option may change each time through the fg/bg loop.

Instead of setting the addr= option in nfs_validate_options(), set it
in nfs_try_mount_v2v3() and nfs_try_mount_v4().  This is much the
same thing we did recently with the version-specific mount options
which might change each time through the fg/bg retry loop.

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

 utils/mount/stropts.c |   23 +++++++++++++++++++----
 1 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index 4ffee48..fc1b0da 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -563,10 +563,6 @@ static int nfs_sys_mount(struct nfsmount_info *mi, struct mount_options *opts)
 		return 0;
 	}
 
-	if (verbose)
-		printf(_("%s: trying text-based options '%s'\n"),
-			progname, options);
-
 	if (mi->fake)
 		return 1;
 
@@ -585,6 +581,7 @@ static int nfs_sys_mount(struct nfsmount_info *mi, struct mount_options *opts)
  */
 static int nfs_try_mount_v3v2(struct nfsmount_info *mi)
 {
+	struct addrinfo *ai = mi->address;
 	struct mount_options *options = po_dup(mi->options);
 	int result = 0;
 
@@ -593,6 +590,11 @@ static int nfs_try_mount_v3v2(struct nfsmount_info *mi)
 		return result;
 	}
 
+	if (!nfs_append_addr_option(ai->ai_addr, ai->ai_addrlen, options)) {
+		errno = EINVAL;
+		goto out_fail;
+	}
+
 	if (!nfs_fix_mounthost_option(options, mi->hostname)) {
 		errno = EINVAL;
 		goto out_fail;
@@ -613,6 +615,10 @@ static int nfs_try_mount_v3v2(struct nfsmount_info *mi)
 		goto out_fail;
 	}
 
+	if (verbose)
+		printf(_("%s: trying text-based options '%s'\n"),
+			progname, *mi->extra_opts);
+
 	if (!nfs_rewrite_pmap_mount_options(options))
 		goto out_fail;
 
@@ -656,6 +662,11 @@ static int nfs_try_mount_v4(struct nfsmount_info *mi)
 		}
 	}
 
+	if (!nfs_append_addr_option(ai->ai_addr, ai->ai_addrlen, options)) {
+		errno = EINVAL;
+		goto out_fail;
+	}
+
 	if (!nfs_append_clientaddr_option(ai->ai_addr, ai->ai_addrlen, options)) {
 		errno = EINVAL;
 		goto out_fail;
@@ -669,6 +680,10 @@ static int nfs_try_mount_v4(struct nfsmount_info *mi)
 		goto out_fail;
 	}
 
+	if (verbose)
+		printf(_("%s: trying text-based options '%s'\n"),
+			progname, *mi->extra_opts);
+
 	result = nfs_sys_mount(mi, options);
 
 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

[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