All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Dickson <SteveD@redhat.com>
To: "J. Bruce Fields" <bfields@redhat.com>
Cc: Trond Myklebust <Trond.Myklebust@netapp.com>,
	Linux NFS Mailing list <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client
Date: Fri, 22 Feb 2013 12:01:49 -0500	[thread overview]
Message-ID: <5127A47D.4060602@RedHat.com> (raw)
In-Reply-To: <20130222165858.GB10846@pad.fieldses.org>



On 22/02/13 11:58, J. Bruce Fields wrote:
> On Fri, Feb 22, 2013 at 11:38:25AM -0500, Steve Dickson wrote:
>>
>>
>> On 22/02/13 10:13, J. Bruce Fields wrote:
>>> On Thu, Feb 21, 2013 at 05:15:10PM -0500, Steve Dickson wrote:
>>>> This enable NFSv4.2 support. To enable this code the
>>>> CONFIG_NFS_V4_2 Kconfig define needs to be set and
>>>> the -o v4.2 mount option need to be used.
>>>>
>>>> Signed-off-by: Steve Dickson <steved@redhat.com>
>>>> ---
>>>>  fs/nfs/Kconfig       | 11 ++++++++++-
>>>>  fs/nfs/callback.c    |  3 +++
>>>>  fs/nfs/nfs4client.c  |  5 +++++
>>>>  fs/nfs/nfs4proc.c    |  3 +++
>>>>  fs/nfs/super.c       |  7 ++++++-
>>>>  include/linux/nfs4.h |  4 ++++
>>>>  6 files changed, 31 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
>>>> index 3861a1f..247db6d 100644
>>>> --- a/fs/nfs/Kconfig
>>>> +++ b/fs/nfs/Kconfig
>>>> @@ -104,6 +104,15 @@ config NFS_V4_1
>>>>  
>>>>  	  If unsure, say N.
>>>>  
>>>> +config NFS_V4_2
>>>> +	bool "NFS client support for NFSv4.2"
>>>> +	depends on NFS_V4_1
>>>> +	help
>>>> +	  This option enables support for minor version 1 of the NFSv4 protocol
>>>> +	  (RFC 5661) in the kernel's NFS client.
>>>> +
>>>> +	  If unsure, say N.
>>>> +
>>>>  config PNFS_FILE_LAYOUT
>>>>  	tristate
>>>>  	depends on NFS_V4_1
>>>> @@ -133,7 +142,7 @@ config NFS_V4_1_IMPLEMENTATION_ID_DOMAIN
>>>>  
>>>>  config NFS_V4_SECURITY_LABEL
>>>>  	bool "Provide Security Label support for NFSv4 client"
>>>> -	depends on NFS_V4 && SECURITY
>>>> +	depends on NFS_V4_2 && SECURITY
>>>>  	help
>>>>  
>>>>  	Say Y here if you want enable fine-grained security label attribute
>>>> diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
>>>> index 5088b57..4058ec8 100644
>>>> --- a/fs/nfs/callback.c
>>>> +++ b/fs/nfs/callback.c
>>>> @@ -281,6 +281,9 @@ static int nfs_callback_up_net(int minorversion, struct svc_serv *serv, struct n
>>>>  		case 1:
>>>>  			ret = nfs41_callback_up_net(serv, net);
>>>>  			break;
>>>> +		case 2:
>>>> +			ret = nfs41_callback_up_net(serv, net);
>>>> +			break;
>>>>  		default:
>>>>  			printk(KERN_ERR "NFS: unknown callback version: %d\n",
>>>>  					minorversion);
>>>> diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
>>>> index 2e9779b..2987fd6 100644
>>>> --- a/fs/nfs/nfs4client.c
>>>> +++ b/fs/nfs/nfs4client.c
>>>> @@ -66,6 +66,11 @@ struct nfs_client *nfs4_alloc_client(const struct nfs_client_initdata *cl_init)
>>>>  	if (err)
>>>>  		goto error;
>>>>  
>>>> +	if (cl_init->minorversion > NFS4_MAX_MINOR_VERSION) {
>>>> +		err = -EINVAL;
>>>> +		goto error;
>>>> +	}
>>>
>>> Why wasn't this check needed before?
>> It was not needed because the checks in nfs_parse_version_string caught
>> the mismatch minor version... but since minor version 2 is no longer
>> a mismatch and those checks in nfs_parse_version_string are not
>> covered by an ifdef this check is now needed... 
> 
> NFSv4.1 could be configured out too.  How did it manage to return an
> error for minorversion == 1 in the !CONFIG_NFS_V4_1 case before?
Never tested?? I can't say... but this was the very first oops when
I enabled the 4.2 parsing... 

> 
>>>> +		
>>>>  	spin_lock_init(&clp->cl_lock);
>>>>  	INIT_DELAYED_WORK(&clp->cl_renewd, nfs4_renew_state);
>>>>  	rpc_init_wait_queue(&clp->cl_rpcwaitq, "NFS client");
>>>> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
>>>> index 40c1d1f..08fc8e2 100644
>>>> --- a/fs/nfs/nfs4proc.c
>>>> +++ b/fs/nfs/nfs4proc.c
>>>> @@ -7136,6 +7136,9 @@ const struct nfs4_minor_version_ops *nfs_v4_minor_ops[] = {
>>>>  #if defined(CONFIG_NFS_V4_1)
>>>>  	[1] = &nfs_v4_1_minor_ops,
>>>>  #endif
>>>> +#if defined(CONFIG_NFS_V4_2)
>>>> +	[2] = &nfs_v4_1_minor_ops,
>>>
>>> But then nfs_v4_minor_ops[2]->minor_version = 1.
>>>
>>> I think you want to create another structure--just define an
>>> nfs_v4_2_minor_ops field that's the same as nfs_v4_1_minor_ops except
>>> for the minor_version field.
>> That's how I started out: 
>>
>> #if defined(CONFIG_NFS_V4_2)
>> static const struct nfs4_minor_version_ops nfs_v4_2_minor_ops = {
>>     .minor_version = 2,
>>     .call_sync = nfs4_call_sync_sequence,
>>     .match_stateid = nfs41_match_stateid,
>>     .find_root_sec = nfs41_find_root_sec,
>>     .reboot_recovery_ops = &nfs41_reboot_recovery_ops,
>>     .nograce_recovery_ops = &nfs41_nograce_recovery_ops,
>>     .state_renewal_ops = &nfs41_state_renewal_ops,
>> };
>> #endif
>>
>> but it just seem like such a big waste of space...
> 
> Correctness first....
Fine... new version on the way...

steved.
> 
> --b.
> 
>> I could switch back... 

  reply	other threads:[~2013-02-22 17:01 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-21 22:15 [PATCH 0/2] NFS v4.2 support to both the server and client Steve Dickson
2013-02-21 22:15 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-21 22:22   ` Myklebust, Trond
2013-02-21 23:13     ` Steve Dickson
2013-02-22 15:28       ` J. Bruce Fields
2013-02-22 15:34         ` Myklebust, Trond
2013-02-22 15:13   ` J. Bruce Fields
2013-02-22 16:38     ` Steve Dickson
2013-02-22 16:58       ` J. Bruce Fields
2013-02-22 17:01         ` Steve Dickson [this message]
2013-02-21 22:15 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
2013-02-22 15:26   ` J. Bruce Fields
2013-02-22 15:30     ` Myklebust, Trond
2013-02-22 15:38       ` J. Bruce Fields
  -- strict thread matches above, loose matches on Subject: below --
2013-02-22  8:47 [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) Steve Dickson
2013-02-22  8:47 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-22 13:11   ` Jim Rees
2013-02-22 13:55     ` Steve Dickson
2013-02-22 14:34 [PATCH 0/2] NFS v4.2 support to both the server and client (take 3) Steve Dickson
2013-02-22 14:34 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
2013-02-22 14:41   ` Myklebust, Trond
2013-02-22 15:32     ` Steve Dickson
2013-02-22 17:09 [PATCH 0/2] NFS v4.2 support to both the server and client (take 4) Steve Dickson
2013-02-22 17:09 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5127A47D.4060602@RedHat.com \
    --to=steved@redhat.com \
    --cc=Trond.Myklebust@netapp.com \
    --cc=bfields@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.