2009-05-05 21:46:45

by Kevin Constantine

[permalink] [raw]
Subject: [PATCH 2/2] Allow nfs/vers=4 option in text-based mount commands

This allows a user to specify nfsvers=4, or vers=4 on the mount
commandline and have mount.nfs4 called as though fstype=nfs4 were
specified. This patch handles the nfsmount_string case in
mount.c's try_mount().

We get the value of the "vers=" or "nfsvers=" from the nfsmount_info
structure, and if the value equals 4, we set the fstype to nfs4, and
remove the nfsvers/vers options from the structure since it shouldn't
be there in the first place, and we don't want to pass it along down
the stack.

po_get_numeric returns the rightmost instance, so we honor the last
value of nfsvers/vers in the event that it is overridden later in the
options string.

Signed-off-by: Kevin Constantine <kevin.constantine-FfNkGbSheRGpB8w63BLUukEOCMrvLtNR@public.gmane.org>
---
utils/mount/stropts.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
index c369136..72b0d13 100644
--- a/utils/mount/stropts.c
+++ b/utils/mount/stropts.c
@@ -754,6 +754,15 @@ static const char *nfs_background_opttbl[] = {

static int nfsmount_start(struct nfsmount_info *mi)
{
+ long tmp;
+ po_get_numeric(mi->options, "vers", &tmp);
+ po_get_numeric(mi->options, "nfsvers", &tmp);
+ if (tmp == 4) {
+ mi->type = "nfs4";
+ po_remove_all(mi->options, "vers");
+ po_remove_all(mi->options, "nfsvers");
+ }
+
if (!nfs_validate_options(mi))
return EX_FAIL;

--
1.6.2.1



2009-05-05 22:02:52

by Chuck Lever

[permalink] [raw]
Subject: Re: [PATCH 2/2] Allow nfs/vers=4 option in text-based mount commands


On May 5, 2009, at 5:46 PM, Kevin Constantine wrote:

> This allows a user to specify nfsvers=4, or vers=4 on the mount
> commandline and have mount.nfs4 called as though fstype=nfs4 were
> specified. This patch handles the nfsmount_string case in
> mount.c's try_mount().
>
> We get the value of the "vers=" or "nfsvers=" from the nfsmount_info
> structure, and if the value equals 4, we set the fstype to nfs4, and
> remove the nfsvers/vers options from the structure since it shouldn't
> be there in the first place, and we don't want to pass it along down
> the stack.
>
> po_get_numeric returns the rightmost instance, so we honor the last
> value of nfsvers/vers in the event that it is overridden later in the
> options string.
>
> Signed-off-by: Kevin Constantine <kevin.constantine-FfNkGbSheRGpB8w63BLUukEOCMrvLtNR@public.gmane.org
> >
> ---
> utils/mount/stropts.c | 9 +++++++++
> 1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
> index c369136..72b0d13 100644
> --- a/utils/mount/stropts.c
> +++ b/utils/mount/stropts.c
> @@ -754,6 +754,15 @@ static const char *nfs_background_opttbl[] = {
>
> static int nfsmount_start(struct nfsmount_info *mi)
> {
> + long tmp;
> + po_get_numeric(mi->options, "vers", &tmp);
> + po_get_numeric(mi->options, "nfsvers", &tmp);

If someone specifies both a vers= and a nfsvers= on the command line,
this won't handle it. You need to implement a rightmost search, as
Steve's patch (posted previously on this list) did.

> + if (tmp == 4) {
> + mi->type = "nfs4";
> + po_remove_all(mi->options, "vers");
> + po_remove_all(mi->options, "nfsvers");
> + }
> +
> if (!nfs_validate_options(mi))
> return EX_FAIL;
>
> --
> 1.6.2.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs"
> in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





2009-05-07 20:03:09

by Kevin Constantine

[permalink] [raw]
Subject: Re: [PATCH 2/2] Allow nfs/vers=4 option in text-based mount commands

Chuck Lever wrote:
>
> On May 5, 2009, at 5:46 PM, Kevin Constantine wrote:
>
>> This allows a user to specify nfsvers=4, or vers=4 on the mount
>> commandline and have mount.nfs4 called as though fstype=nfs4 were
>> specified. This patch handles the nfsmount_string case in
>> mount.c's try_mount().
>>
>> We get the value of the "vers=" or "nfsvers=" from the nfsmount_info
>> structure, and if the value equals 4, we set the fstype to nfs4, and
>> remove the nfsvers/vers options from the structure since it shouldn't
>> be there in the first place, and we don't want to pass it along down
>> the stack.
>>
>> po_get_numeric returns the rightmost instance, so we honor the last
>> value of nfsvers/vers in the event that it is overridden later in the
>> options string.
>>
>> Signed-off-by: Kevin Constantine <kevin.constantine-FfNkGbSheRGpB8w63BLUukEOCMrvLtNR@public.gmane.org>
>> ---
>> utils/mount/stropts.c | 9 +++++++++
>> 1 files changed, 9 insertions(+), 0 deletions(-)
>>
>> diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c
>> index c369136..72b0d13 100644
>> --- a/utils/mount/stropts.c
>> +++ b/utils/mount/stropts.c
>> @@ -754,6 +754,15 @@ static const char *nfs_background_opttbl[] = {
>>
>> static int nfsmount_start(struct nfsmount_info *mi)
>> {
>> + long tmp;
>> + po_get_numeric(mi->options, "vers", &tmp);
>> + po_get_numeric(mi->options, "nfsvers", &tmp);
>
> If someone specifies both a vers= and a nfsvers= on the command line,
> this won't handle it. You need to implement a rightmost search, as
> Steve's patch (posted previously on this list) did.
>

I can't seem to find Steve's patches relating to this issue. I'm
assuming that since there are already patches related to this, it's not
worth pursuing these particular patches.

Let me know

-kevin

>> + if (tmp == 4) {
>> + mi->type = "nfs4";
>> + po_remove_all(mi->options, "vers");
>> + po_remove_all(mi->options, "nfsvers");
>> + }
>> +
>> if (!nfs_validate_options(mi))
>> return EX_FAIL;
>>
>> --
>> 1.6.2.1
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to [email protected]
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

--
------------------------------------------------------------
Kevin Constantine

Systems Engineer t: 818.460.8221
Walt Disney Animation Studios e: kevin.constantine-P5ys19MLBK/[email protected]

Any sufficiently advanced technology is indistinguishable from magic.
- Arthur C. Clarke