diff mbox

mount.nfs: Teach mount.nfs about the mountversion option

Message ID 1436193748-4301-1-git-send-email-steved@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Steve Dickson July 6, 2015, 2:42 p.m. UTC
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 <steved@redhat.com>
---
 utils/mount/network.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Trond Myklebust July 6, 2015, 3:19 p.m. UTC | #1
On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
> ---
>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson July 6, 2015, 4:50 p.m. UTC | #2
On 07/06/2015 11:19 AM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>> ---
>>  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.

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Trond Myklebust July 6, 2015, 4:53 p.m. UTC | #3
On Mon, Jul 6, 2015 at 12:50 PM, Steve Dickson <SteveD@redhat.com> wrote:
>
>
> On 07/06/2015 11:19 AM, Trond Myklebust wrote:
>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>>> ---
>>>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson July 6, 2015, 5:36 p.m. UTC | #4
On 07/06/2015 12:53 PM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 12:50 PM, Steve Dickson <SteveD@redhat.com> wrote:
>>
>>
>> On 07/06/2015 11:19 AM, Trond Myklebust wrote:
>>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>>>> ---
>>>>  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
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Kinglong Mee July 6, 2015, 10:21 p.m. UTC | #5
On 7/6/2015 23:19, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>> ---
>>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Trond Myklebust July 6, 2015, 10:29 p.m. UTC | #6
On Mon, Jul 6, 2015 at 6:21 PM, Kinglong Mee <kinglongmee@gmail.com> wrote:
> On 7/6/2015 23:19, Trond Myklebust wrote:
>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>>> ---
>>>  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
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson July 10, 2015, 3:49 p.m. UTC | #7
On 07/06/2015 06:29 PM, Trond Myklebust wrote:
> On Mon, Jul 6, 2015 at 6:21 PM, Kinglong Mee <kinglongmee@gmail.com> wrote:
>> On 7/6/2015 23:19, Trond Myklebust wrote:
>>> On Mon, Jul 6, 2015 at 10:42 AM, Steve Dickson <steved@redhat.com> 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 <steved@redhat.com>
>>>> ---
>>>>  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.

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson Nov. 20, 2015, 3:23 p.m. UTC | #8
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 <steved@redhat.com>
> ---
>  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 == '.') {
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Steve Dickson Nov. 21, 2015, 3:34 p.m. UTC | #9
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 <steved@redhat.com>
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 == '.') {
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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 == '.') {