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@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
- if (verbose)
- printf(_("%s: trying text-based options '%s'\n"),
- progname, options);
-
*/
static int nfs_try_mount_v3v2(struct nfsmount_info *mi)
{
*/
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;
struct mount_options *options = po_dup(mi->options);
int result = 0;
+ 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;
if (!nfs_fix_mounthost_option(options, mi->hostname)) {
errno = EINVAL;
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;
if (!nfs_rewrite_pmap_mount_options(options))
goto out_fail;
+ 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;
if (!nfs_append_clientaddr_option(ai->ai_addr, ai->ai_addrlen, options)) {
errno = EINVAL;
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:
result = nfs_sys_mount(mi, options);
out_fail: