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