Re: [PATCH 1/2] nfsd: fix version-setting regression on old kernels

Steve Dickson
2010-02-04T21:37:56Z

On 01/27/2010 05:26 PM, J. Bruce Fields wrote:
> /proc/fs/nfsd/versions was extended to allow turning on/off minor
> versions by echoing "+4.1" or "-4.1" to /proc/fs/nsfd/versions.
>
> Unfortunately, pre-2.6.30 kernels just stop parsing at first non-digit,
> so "-4.1" is interpreted as "-4". If new nfs-utils (on old kernel)
> writes "+2", "+3", "+4", then "-4.1", result therefore is to turn off
> 4.1.
>
> Given that historical behavior, it may have been a mistake to extend the
> interface the way we did; but at this point we're probably stuck with
> it. So, just reverse the order we write versions in.
>
> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
> ---
> utils/nfsd/nfssvc.c | 10 +++++-----
> 1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/utils/nfsd/nfssvc.c b/utils/nfsd/nfssvc.c
> index b8028bb..7bbbaba 100644
> --- a/utils/nfsd/nfssvc.c
> +++ b/utils/nfsd/nfssvc.c
> @@ -238,17 +238,17 @@ nfssvc_setvers(unsigned int ctlbits, int minorvers4)
> if (fd < 0)
> return;
>
> + n = minorvers4 >= 0 ? minorvers4 : -minorvers4;
> + if (n >= NFSD_MINMINORVERS4 && n <= NFSD_MAXMINORVERS4)
> + off += snprintf(ptr+off, sizeof(buf) - off, "%c4.%d",
There needs to be a space between the %d and ".

But more importantly what problem is the patch fixing?? I've tested this
on a 2.6.29 and 2.6.31 as well as a 2.6.33 kernel and I see no different
in how the versions are ordered.

Note, as you probably already know, the kernel will always display
the versions in descending order...

steved.