Re: [PATCH] nfs-utils: Backgrounding mount broken with NFS versions <4

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

 



Hi,

> >>> 	result = nfs_sys_mount(mi, options);
> > 
> > No, nfs_sys_mount() does not use mi->extra_opts at all, only the
> > binary options.
> 
> This is the text-based code, which I wrote.  nfs_sys_mount() passes an options string (NUL-terminated C string) to the kernel, not a binary object.  That string contains all the FS-specific mount options specified by the user.
> 
> But your patch makes that string empty, by my reading.  I think this is incorrect.

Ok, I'm happy to go through this line-by-line.

static int nfs_sys_mount(struct nfsmount_info *mi, struct mount_options *opts)
{
        char *options = NULL;
        int result;

        if (mi->fake)
                return 1;

        if (po_join(opts, &options) == PO_FAILED) { // HERE
                errno = EIO;
                return 0;
        }

        result = mount(mi->spec, mi->node, mi->type,
                        mi->flags & ~(MS_USER|MS_USERS), options);
...
}

nfs_sys_mount() constructs the text options _itself_ purely from the
opts (2nd) argument HERE -- po_join has opts as input and options as
output.

My patch only changes the first argument (mi).  So, no functional change
within nfs_sys_mount() at all.

The functional change is that with my patch, mi->extra_opts is kept
unchanged unless the system call is successful.  mi->extra_opts is
actually reused later throughout the mount program, because
nfsmount_string() has extra_opts as an input _and_ output argument,
and propagates mi->extra_opts into the extra_opts variable in main.c.

I have actually tested this patch extensively and it fixes the
problem.

Regards,
Wolfram.
--
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