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

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

 



On Oct 13, 2012, at 5:46 PM, Wolfram Gloger <wmglo@xxxxxxxxxxxxxxxxxxxxxxxx> wrote:

> 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.

Agreed.

> 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.

Unfortunately there are a rather unimaginable number of use cases for mount.nfs, which is why it is so complicated.  "Extensively" could mean you've tested it for a long time but with just a few use cases.

In any event:

Reviewed-by: Chuck Lever <chuck.lever@xxxxxxxxxx>

--
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


[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