Blame SOURCES/nfs-utils-1.3.0-mount-remount.patch

e19a30
diff -up nfs-utils-1.3.0/utils/mount/stropts.c.orig nfs-utils-1.3.0/utils/mount/stropts.c
e19a30
--- nfs-utils-1.3.0/utils/mount/stropts.c.orig	2014-03-25 11:12:07.000000000 -0400
e19a30
+++ nfs-utils-1.3.0/utils/mount/stropts.c	2016-04-28 11:18:25.876793000 -0400
e19a30
@@ -352,13 +352,26 @@ static int nfs_validate_options(struct n
e19a30
 	if (!nfs_nfs_proto_family(mi->options, &family))
e19a30
 		return 0;
e19a30
 
e19a30
-	hint.ai_family = (int)family;
e19a30
-	error = getaddrinfo(mi->hostname, NULL, &hint, &mi->address);
e19a30
-	if (error != 0) {
e19a30
-		nfs_error(_("%s: Failed to resolve server %s: %s"),
e19a30
-			progname, mi->hostname, gai_strerror(error));
e19a30
-		mi->address = NULL;
e19a30
-		return 0;
e19a30
+	/*
e19a30
+	 * A remount is not going to be able to change the server's address,
e19a30
+	 * nor should we try to resolve another address for the server as we
e19a30
+	 * may end up with a different address.
e19a30
+	 */
e19a30
+	if (mi->flags & MS_REMOUNT) {
e19a30
+		po_remove_all(mi->options, "addr");
e19a30
+	} else {
e19a30
+		hint.ai_family = (int)family;
e19a30
+		error = getaddrinfo(mi->hostname, NULL, &hint, &mi->address);
e19a30
+		if (error != 0) {
e19a30
+			nfs_error(_("%s: Failed to resolve server %s: %s"),
e19a30
+				progname, mi->hostname, gai_strerror(error));
e19a30
+			mi->address = NULL;
e19a30
+			return 0;
e19a30
+		}
e19a30
+
e19a30
+		if (!nfs_append_addr_option(mi->address->ai_addr,
e19a30
+						mi->address->ai_addrlen, mi->options))
e19a30
+			return 0;
e19a30
 	}
e19a30
 
e19a30
 	if (!nfs_set_version(mi))
e19a30
@@ -367,10 +380,6 @@ static int nfs_validate_options(struct n
e19a30
 	if (!nfs_append_sloppy_option(mi->options))
e19a30
 		return 0;
e19a30
 
e19a30
-	if (!nfs_append_addr_option(mi->address->ai_addr,
e19a30
-					mi->address->ai_addrlen, mi->options))
e19a30
-		return 0;
e19a30
-
e19a30
 	return 1;
e19a30
 }
e19a30