On Oct 12, 2012, at 8:00 AM, Wolfram Gloger <wmglo@xxxxxxxxxxxxxxxxxxxxxxxx> wrote: > When the NFS version isn't specified in the mount options, mount.nfs > attempts V4 first and appends 'vers=4' to the extra_options string in > the mount options. If the server isn't immediately reachable, this > attempt fails. However, if the background option is specified and the > server comes up later on, the extra_options are used again for all > further attempts and thus they fail if the server only supports > vers<4. > > Fix this by only amending extra_options on a successful vers=4 mount. > > This is now Debian bug #690181 and has apparently been around for > ages. > > Signed-off-by: Wolfram Gloger <bugzilla1@xxxxxxxxx> > > --- utils/mount/stropts.c.orig 2012-08-23 19:41:56.000000000 +0200 > +++ utils/mount/stropts.c 2012-10-11 13:46:25.000000000 +0200 > @@ -680,6 +680,7 @@ > { > struct mount_options *options = po_dup(mi->options); > int result = 0; > + char *extra_opts = NULL; > > if (!options) { > errno = ENOMEM; > @@ -715,20 +716,26 @@ > goto out_fail; > } > > - /* > - * Update option string to be recorded in /etc/mtab. > - */ > - if (po_join(options, mi->extra_opts) == PO_FAILED) { > + if (po_join(options, &extra_opts) == PO_FAILED) { This doesn't look right to me, but I haven't had time to test it. Doesn't this hunk cause the mount system call to ignore what's in mi->extra_opts? > errno = ENOMEM; > goto out_fail; > } > > if (verbose) > printf(_("%s: trying text-based options '%s'\n"), > - progname, *mi->extra_opts); > + progname, extra_opts); > result = nfs_sys_mount(mi, options); > > + /* > + * If success, update option string to be recorded in /etc/mtab. > + */ > + if (result) { > + free(*mi->extra_opts); > + *mi->extra_opts = extra_opts; > + } else > + free(extra_opts); > + > out_fail: > po_destroy(options); > return result; > -- > 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 -- Chuck Lever chuck[dot]lever[at]oracle[dot]com -- 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