2015-07-06 14:42:31

by Steve Dickson

[permalink] [raw]
Subject: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option

When the mountversion option is used, there should
not be any mount negotiations with the server.

Also, when the option is used, its know that the mount
is a v4 mount and a V_SPECFIC type.

Signed-off-by: Steve Dickson <[email protected]>
---
utils/mount/network.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/utils/mount/network.c b/utils/mount/network.c
index b5ed850..ebc39d3 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
"v4",
"vers",
"nfsvers",
+ "minorversion",
NULL,
};

@@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
if (!(version->major = strtol(version_val, &cptr, 10)))
goto ret_error;

- if (version->major < 4)
+ if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
+ version->v_mode = V_SPECIFIC;
+ version->minor = version->major;
+ version->major = 4;
+ } else if (version->major < 4)
version->v_mode = V_SPECIFIC;

if (*cptr == '.') {
--
2.4.3



2015-07-06 15:19:42

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option

On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
> When the mountversion option is used, there should
> not be any mount negotiations with the server.
>
> Also, when the option is used, its know that the mount
> is a v4 mount and a V_SPECFIC type.
>
> Signed-off-by: Steve Dickson <[email protected]>
> ---
> utils/mount/network.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/utils/mount/network.c b/utils/mount/network.c
> index b5ed850..ebc39d3 100644
> --- a/utils/mount/network.c
> +++ b/utils/mount/network.c
> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
> "v4",
> "vers",
> "nfsvers",
> + "minorversion",
> NULL,
> };
>
> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
> if (!(version->major = strtol(version_val, &cptr, 10)))
> goto ret_error;
>
> - if (version->major < 4)
> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
> + version->v_mode = V_SPECIFIC;
> + version->minor = version->major;
> + version->major = 4;
> + } else if (version->major < 4)
> version->v_mode = V_SPECIFIC;
>
> if (*cptr == '.') {
>

Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
and 'minorversion' in your mount options string?

Cheers
Trond

2015-07-06 16:50:59

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option



On 07/06/2015 11:19 AM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>> When the mountversion option is used, there should
>> not be any mount negotiations with the server.
>>
>> Also, when the option is used, its know that the mount
>> is a v4 mount and a V_SPECFIC type.
>>
>> Signed-off-by: Steve Dickson <[email protected]>
>> ---
>> utils/mount/network.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>> index b5ed850..ebc39d3 100644
>> --- a/utils/mount/network.c
>> +++ b/utils/mount/network.c
>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>> "v4",
>> "vers",
>> "nfsvers",
>> + "minorversion",
>> NULL,
>> };
>>
>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>> if (!(version->major = strtol(version_val, &cptr, 10)))
>> goto ret_error;
>>
>> - if (version->major < 4)
>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>> + version->v_mode = V_SPECIFIC;
>> + version->minor = version->major;
>> + version->major = 4;
>> + } else if (version->major < 4)
>> version->v_mode = V_SPECIFIC;
>>
>> if (*cptr == '.') {
>>
>
> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
> and 'minorversion' in your mount options string?
I don't think so... The only combination that does not work
is -o nfsvers=3,minorversion=1 which should fail...

What am I missing?

steved.


2015-07-06 16:53:58

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option

On Mon, Jul 6, 2015 at 12:50 PM, Steve Dickson <[email protected]> wrote:
>
>
> On 07/06/2015 11:19 AM, Trond Myklebust wrote:
>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>>> When the mountversion option is used, there should
>>> not be any mount negotiations with the server.
>>>
>>> Also, when the option is used, its know that the mount
>>> is a v4 mount and a V_SPECFIC type.
>>>
>>> Signed-off-by: Steve Dickson <[email protected]>
>>> ---
>>> utils/mount/network.c | 7 ++++++-
>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>>> index b5ed850..ebc39d3 100644
>>> --- a/utils/mount/network.c
>>> +++ b/utils/mount/network.c
>>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>>> "v4",
>>> "vers",
>>> "nfsvers",
>>> + "minorversion",
>>> NULL,
>>> };
>>>
>>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>>> if (!(version->major = strtol(version_val, &cptr, 10)))
>>> goto ret_error;
>>>
>>> - if (version->major < 4)
>>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>>> + version->v_mode = V_SPECIFIC;
>>> + version->minor = version->major;
>>> + version->major = 4;
>>> + } else if (version->major < 4)
>>> version->v_mode = V_SPECIFIC;
>>>
>>> if (*cptr == '.') {
>>>
>>
>> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
>> and 'minorversion' in your mount options string?
> I don't think so... The only combination that does not work
> is -o nfsvers=3,minorversion=1 which should fail...
>
> What am I missing?
>

Does "-o minorversion=1,nfsvers=3" show the same behaviour?

Cheers
Trond

2015-07-06 17:36:28

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option



On 07/06/2015 12:53 PM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 12:50 PM, Steve Dickson <[email protected]> wrote:
>>
>>
>> On 07/06/2015 11:19 AM, Trond Myklebust wrote:
>>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>>>> When the mountversion option is used, there should
>>>> not be any mount negotiations with the server.
>>>>
>>>> Also, when the option is used, its know that the mount
>>>> is a v4 mount and a V_SPECFIC type.
>>>>
>>>> Signed-off-by: Steve Dickson <[email protected]>
>>>> ---
>>>> utils/mount/network.c | 7 ++++++-
>>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>>>> index b5ed850..ebc39d3 100644
>>>> --- a/utils/mount/network.c
>>>> +++ b/utils/mount/network.c
>>>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>>>> "v4",
>>>> "vers",
>>>> "nfsvers",
>>>> + "minorversion",
>>>> NULL,
>>>> };
>>>>
>>>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>>>> if (!(version->major = strtol(version_val, &cptr, 10)))
>>>> goto ret_error;
>>>>
>>>> - if (version->major < 4)
>>>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>>>> + version->v_mode = V_SPECIFIC;
>>>> + version->minor = version->major;
>>>> + version->major = 4;
>>>> + } else if (version->major < 4)
>>>> version->v_mode = V_SPECIFIC;
>>>>
>>>> if (*cptr == '.') {
>>>>
>>>
>>> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
>>> and 'minorversion' in your mount options string?
>> I don't think so... The only combination that does not work
>> is -o nfsvers=3,minorversion=1 which should fail...
>>
>> What am I missing?
>>
>
> Does "-o minorversion=1,nfsvers=3" show the same behaviour?
It does
# mount.nfs -o minorversion=1,nfsvers=3 freddy:/home /mnt/home
mount.nfs: an incorrect mount option was specified

Plus a nice little error message comes out on the console
NFS: mount option vers=3 does not support minorversion=1

And -o minorversion=0,nfsvers=3 works as expected...

steved.



>
> Cheers
> Trond
>

2015-07-06 22:21:36

by Kinglong Mee

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option

On 7/6/2015 23:19, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>> When the mountversion option is used, there should
>> not be any mount negotiations with the server.
>>
>> Also, when the option is used, its know that the mount
>> is a v4 mount and a V_SPECFIC type.
>>
>> Signed-off-by: Steve Dickson <[email protected]>
>> ---
>> utils/mount/network.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>> index b5ed850..ebc39d3 100644
>> --- a/utils/mount/network.c
>> +++ b/utils/mount/network.c
>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>> "v4",
>> "vers",
>> "nfsvers",
>> + "minorversion",
>> NULL,
>> };
>>
>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>> if (!(version->major = strtol(version_val, &cptr, 10)))
>> goto ret_error;
>>
>> - if (version->major < 4)
>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>> + version->v_mode = V_SPECIFIC;
>> + version->minor = version->major;
>> + version->major = 4;
>> + } else if (version->major < 4)
>> version->v_mode = V_SPECIFIC;
>>
>> if (*cptr == '.') {
>>
>
> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
> and 'minorversion' in your mount options string?

Without this patch, there is a dependency on the ordering now.
mount with "-o minorversion=1", nfs gets strings as "minorversion=1,vers=4.2"

If nfs-utils doesn't parse minorversion, the order dependency also exist.

I agree with parsing minorversion in nfs-utils.

thanks,
Kinglong Mee

2015-07-06 22:29:13

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option

On Mon, Jul 6, 2015 at 6:21 PM, Kinglong Mee <[email protected]> wrote:
> On 7/6/2015 23:19, Trond Myklebust wrote:
>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>>> When the mountversion option is used, there should
>>> not be any mount negotiations with the server.
>>>
>>> Also, when the option is used, its know that the mount
>>> is a v4 mount and a V_SPECFIC type.
>>>
>>> Signed-off-by: Steve Dickson <[email protected]>
>>> ---
>>> utils/mount/network.c | 7 ++++++-
>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>>> index b5ed850..ebc39d3 100644
>>> --- a/utils/mount/network.c
>>> +++ b/utils/mount/network.c
>>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>>> "v4",
>>> "vers",
>>> "nfsvers",
>>> + "minorversion",
>>> NULL,
>>> };
>>>
>>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>>> if (!(version->major = strtol(version_val, &cptr, 10)))
>>> goto ret_error;
>>>
>>> - if (version->major < 4)
>>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>>> + version->v_mode = V_SPECIFIC;
>>> + version->minor = version->major;
>>> + version->major = 4;
>>> + } else if (version->major < 4)
>>> version->v_mode = V_SPECIFIC;
>>>
>>> if (*cptr == '.') {
>>>
>>
>> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
>> and 'minorversion' in your mount options string?
>
> Without this patch, there is a dependency on the ordering now.
> mount with "-o minorversion=1", nfs gets strings as "minorversion=1,vers=4.2"
>
> If nfs-utils doesn't parse minorversion, the order dependency also exist.
>
> I agree with parsing minorversion in nfs-utils.
>

I was rather hoping we could get rid of 'minorversion' soon. It is a
wart, and we've already agreed to deprecate it.

Trond

2015-07-10 15:49:54

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option



On 07/06/2015 06:29 PM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 6:21 PM, Kinglong Mee <[email protected]> wrote:
>> On 7/6/2015 23:19, Trond Myklebust wrote:
>>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <[email protected]> wrote:
>>>> When the mountversion option is used, there should
>>>> not be any mount negotiations with the server.
>>>>
>>>> Also, when the option is used, its know that the mount
>>>> is a v4 mount and a V_SPECFIC type.
>>>>
>>>> Signed-off-by: Steve Dickson <[email protected]>
>>>> ---
>>>> utils/mount/network.c | 7 ++++++-
>>>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/utils/mount/network.c b/utils/mount/network.c
>>>> index b5ed850..ebc39d3 100644
>>>> --- a/utils/mount/network.c
>>>> +++ b/utils/mount/network.c
>>>> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
>>>> "v4",
>>>> "vers",
>>>> "nfsvers",
>>>> + "minorversion",
>>>> NULL,
>>>> };
>>>>
>>>> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
>>>> if (!(version->major = strtol(version_val, &cptr, 10)))
>>>> goto ret_error;
>>>>
>>>> - if (version->major < 4)
>>>> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
>>>> + version->v_mode = V_SPECIFIC;
>>>> + version->minor = version->major;
>>>> + version->major = 4;
>>>> + } else if (version->major < 4)
>>>> version->v_mode = V_SPECIFIC;
>>>>
>>>> if (*cptr == '.') {
>>>>
>>>
>>> Doesn't this cause a dependency on the ordering of 'nfsvers'/'vers'
>>> and 'minorversion' in your mount options string?
>>
>> Without this patch, there is a dependency on the ordering now.
>> mount with "-o minorversion=1", nfs gets strings as "minorversion=1,vers=4.2"
>>
>> If nfs-utils doesn't parse minorversion, the order dependency also exist.
>>
>> I agree with parsing minorversion in nfs-utils.
>>
>
> I was rather hoping we could get rid of 'minorversion' soon. It is a
> wart, and we've already agreed to deprecate it.
I agree with the deprecation, but I think that is a different issue...

steved.


2015-11-20 15:23:18

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option



On 07/06/2015 10:42 AM, Steve Dickson wrote:
> When the mountversion option is used, there should
> not be any mount negotiations with the server.
>
> Also, when the option is used, its know that the mount
> is a v4 mount and a V_SPECFIC type.
>
> Signed-off-by: Steve Dickson <[email protected]>
> ---
> utils/mount/network.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
Wow... this slide through the cracks... I still
think its a good idea so with no objection I'm
planning on committing this...

So take solace in the fact it takes awhile for
my own patches to get in! ;-)

steved.

>
> diff --git a/utils/mount/network.c b/utils/mount/network.c
> index b5ed850..ebc39d3 100644
> --- a/utils/mount/network.c
> +++ b/utils/mount/network.c
> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
> "v4",
> "vers",
> "nfsvers",
> + "minorversion",
> NULL,
> };
>
> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
> if (!(version->major = strtol(version_val, &cptr, 10)))
> goto ret_error;
>
> - if (version->major < 4)
> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
> + version->v_mode = V_SPECIFIC;
> + version->minor = version->major;
> + version->major = 4;
> + } else if (version->major < 4)
> version->v_mode = V_SPECIFIC;
>
> if (*cptr == '.') {
>

2015-11-21 15:34:54

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] mount.nfs: Teach mount.nfs about the mountversion option



On 07/06/2015 10:42 AM, Steve Dickson wrote:
> When the mountversion option is used, there should
> not be any mount negotiations with the server.
>
> Also, when the option is used, its know that the mount
> is a v4 mount and a V_SPECFIC type.
>
> Signed-off-by: Steve Dickson <[email protected]>
Committed..

steved.

> ---
> utils/mount/network.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/utils/mount/network.c b/utils/mount/network.c
> index b5ed850..ebc39d3 100644
> --- a/utils/mount/network.c
> +++ b/utils/mount/network.c
> @@ -92,6 +92,7 @@ static const char *nfs_version_opttbl[] = {
> "v4",
> "vers",
> "nfsvers",
> + "minorversion",
> NULL,
> };
>
> @@ -1272,7 +1273,11 @@ nfs_nfs_version(struct mount_options *options, struct nfs_version *version)
> if (!(version->major = strtol(version_val, &cptr, 10)))
> goto ret_error;
>
> - if (version->major < 4)
> + if (strcmp(nfs_version_opttbl[i], "minorversion") == 0) {
> + version->v_mode = V_SPECIFIC;
> + version->minor = version->major;
> + version->major = 4;
> + } else if (version->major < 4)
> version->v_mode = V_SPECIFIC;
>
> if (*cptr == '.') {
>