linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  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 ` Steve Dickson
  2013-02-22 15:26   ` J. Bruce Fields
  0 siblings, 1 reply; 18+ messages in thread
From: Steve Dickson @ 2013-02-21 22:15 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

This enable NFSv4.2 support for the server. To enable this
code do the following:
  echo "+4.2" >/proc/fs/nfsd/versions

after the nfsd kernel module is loaded.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 fs/nfsd/nfs4xdr.c | 1 +
 fs/nfsd/nfsd.h    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index d2ae8db..86be853 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
 static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
 	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
 	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
+	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
 };
 
 static __be32
diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
index 26a457b..0e3ccd1 100644
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -24,7 +24,7 @@
 /*
  * nfsd version
  */
-#define NFSD_SUPPORTED_MINOR_VERSION	1
+#define NFSD_SUPPORTED_MINOR_VERSION	2
 /*
  * Maximum blocksizes supported by daemon under various circumstances.
  */
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 0/2] NFS v4.2 support to both the server and client (take 2)
@ 2013-02-22  8:47 Steve Dickson
  2013-02-22  8:47 ` [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client Steve Dickson
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Steve Dickson @ 2013-02-22  8:47 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

These patche added v4.2 support to both the server and client. 
Basically the v4.1 code is reused, but the minor version is 
needed to enable features like label NFS.

Note, these patch apply on top of the lNFS: 3.8-rc3 release
patches. Although the only conflict if applied without those patches
would be in the Kconfig files 

Steve Dickson (2):
  NFSv4.2: Added NFS v4.2 support to the NFS client
  NFSDv4.2: Added NFS v4.2 support to the NFS server

 fs/nfs/Kconfig       | 12 +++++++++++-
 fs/nfs/callback.c    |  3 +++
 fs/nfs/nfs4client.c  |  5 +++++
 fs/nfs/nfs4proc.c    |  3 +++
 fs/nfs/super.c       |  7 ++++++-
 fs/nfsd/nfs4xdr.c    |  1 +
 fs/nfsd/nfsd.h       |  2 +-
 include/linux/nfs4.h |  4 ++++
 8 files changed, 34 insertions(+), 3 deletions(-)

-- 
1.8.1.2


^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client
  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 ` Steve Dickson
  2013-02-22 13:11   ` Jim Rees
  2013-02-22  8:47 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
  2013-02-22 15:39 ` [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) J. Bruce Fields
  2 siblings, 1 reply; 18+ messages in thread
From: Steve Dickson @ 2013-02-22  8:47 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

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       | 12 +++++++++++-
 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, 32 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
index 3861a1f..b80754b 100644
--- a/fs/nfs/Kconfig
+++ b/fs/nfs/Kconfig
@@ -104,6 +104,16 @@ config NFS_V4_1
 
 	  If unsure, say N.
 
+config NFS_V4_2
+	bool "NFS client support for NFSv4.2"
+	depends on NFS_V4_1
+	select NFS_V4_SECURITY_LABEL
+	help
+	  This option enables support for minor version 1 of the NFSv4 protocol
+	  in the kernel's NFS client.
+
+	  If unsure, say N.
+
 config PNFS_FILE_LAYOUT
 	tristate
 	depends on NFS_V4_1
@@ -133,7 +143,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;
+	}
+		
 	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 30b3e44..2384f91 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,
+#endif
 };
 
 const struct inode_operations nfs4_dir_inode_operations = {
diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 4e78f93..d35582c 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -269,7 +269,7 @@ static match_table_t nfs_local_lock_tokens = {
 
 enum {
 	Opt_vers_2, Opt_vers_3, Opt_vers_4, Opt_vers_4_0,
-	Opt_vers_4_1,
+	Opt_vers_4_1, Opt_vers_4_2,
 
 	Opt_vers_err
 };
@@ -280,6 +280,7 @@ static match_table_t nfs_vers_tokens = {
 	{ Opt_vers_4, "4" },
 	{ Opt_vers_4_0, "4.0" },
 	{ Opt_vers_4_1, "4.1" },
+	{ Opt_vers_4_2, "4.2" },
 
 	{ Opt_vers_err, NULL }
 };
@@ -1143,6 +1144,10 @@ static int nfs_parse_version_string(char *string,
 		mnt->version = 4;
 		mnt->minorversion = 1;
 		break;
+	case Opt_vers_4_2:
+		mnt->version = 4;
+		mnt->minorversion = 2;
+		break;
 	default:
 		return 0;
 	}
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index aab8bd8..e9c040a 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -394,11 +394,15 @@ enum lock_type4 {
 #define NFS4_VERSION 4
 #define NFS4_MINOR_VERSION 0
 
+#if defined(CONFIG_NFS_V4_2)
+#define NFS4_MAX_MINOR_VERSION 2
+#else
 #if defined(CONFIG_NFS_V4_1)
 #define NFS4_MAX_MINOR_VERSION 1
 #else
 #define NFS4_MAX_MINOR_VERSION 0
 #endif /* CONFIG_NFS_V4_1 */
+#endif /* CONFIG_NFS_V4_2 */
 
 #define NFS4_DEBUG 1
 
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  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  8:47 ` Steve Dickson
  2013-02-22 15:39 ` [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) J. Bruce Fields
  2 siblings, 0 replies; 18+ messages in thread
From: Steve Dickson @ 2013-02-22  8:47 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

This enable NFSv4.2 support for the server. To enable this
code do the following:
  echo "+4.2" >/proc/fs/nfsd/versions

after the nfsd kernel module is loaded.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 fs/nfsd/nfs4xdr.c | 1 +
 fs/nfsd/nfsd.h    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index d2ae8db..86be853 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
 static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
 	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
 	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
+	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
 };
 
 static __be32
diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
index 26a457b..0e3ccd1 100644
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -24,7 +24,7 @@
 /*
  * nfsd version
  */
-#define NFSD_SUPPORTED_MINOR_VERSION	1
+#define NFSD_SUPPORTED_MINOR_VERSION	2
 /*
  * Maximum blocksizes supported by daemon under various circumstances.
  */
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client
  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
  0 siblings, 1 reply; 18+ messages in thread
From: Jim Rees @ 2013-02-22 13:11 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list

Steve Dickson wrote:

  +config NFS_V4_2
  +	bool "NFS client support for NFSv4.2"
  +	depends on NFS_V4_1
  +	select NFS_V4_SECURITY_LABEL
  +	help
  +	  This option enables support for minor version 1 of the NFSv4 protocol
  +	  in the kernel's NFS client.
  +
  +	  If unsure, say N.
  +

Shouldn't that be "enables support for minor version 2..."?

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 1/2] NFSv4.2: Added NFS v4.2 support to the NFS client
  2013-02-22 13:11   ` Jim Rees
@ 2013-02-22 13:55     ` Steve Dickson
  0 siblings, 0 replies; 18+ messages in thread
From: Steve Dickson @ 2013-02-22 13:55 UTC (permalink / raw)
  To: Jim Rees; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list



On 22/02/13 08:11, Jim Rees wrote:
> Steve Dickson wrote:
> 
>   +config NFS_V4_2
>   +	bool "NFS client support for NFSv4.2"
>   +	depends on NFS_V4_1
>   +	select NFS_V4_SECURITY_LABEL
>   +	help
>   +	  This option enables support for minor version 1 of the NFSv4 protocol
>   +	  in the kernel's NFS client.
>   +
>   +	  If unsure, say N.
>   +
> 
> Shouldn't that be "enables support for minor version 2..."?
> 
Yes it should be... thanks!

steved.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  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 ` Steve Dickson
  0 siblings, 0 replies; 18+ messages in thread
From: Steve Dickson @ 2013-02-22 14:34 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

This enable NFSv4.2 support for the server. To enable this
code do the following:
  echo "+4.2" >/proc/fs/nfsd/versions

after the nfsd kernel module is loaded.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 fs/nfsd/nfs4xdr.c | 1 +
 fs/nfsd/nfsd.h    | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index d2ae8db..86be853 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
 static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
 	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
 	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
+	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
 };
 
 static __be32
diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
index 26a457b..0e3ccd1 100644
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -24,7 +24,7 @@
 /*
  * nfsd version
  */
-#define NFSD_SUPPORTED_MINOR_VERSION	1
+#define NFSD_SUPPORTED_MINOR_VERSION	2
 /*
  * Maximum blocksizes supported by daemon under various circumstances.
  */
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  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
  0 siblings, 1 reply; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-22 15:26 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, Linux NFS Mailing list

On Thu, Feb 21, 2013 at 05:15:11PM -0500, Steve Dickson wrote:
> This enable NFSv4.2 support for the server. To enable this
> code do the following:
>   echo "+4.2" >/proc/fs/nfsd/versions
> 
> after the nfsd kernel module is loaded.
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
> ---
>  fs/nfsd/nfs4xdr.c | 1 +
>  fs/nfsd/nfsd.h    | 2 +-
>  2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> index d2ae8db..86be853 100644
> --- a/fs/nfsd/nfs4xdr.c
> +++ b/fs/nfsd/nfs4xdr.c
> @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
>  static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
>  	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
>  	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> +	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
>  };
>  
>  static __be32
> diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> index 26a457b..0e3ccd1 100644
> --- a/fs/nfsd/nfsd.h
> +++ b/fs/nfsd/nfsd.h
> @@ -24,7 +24,7 @@
>  /*
>   * nfsd version
>   */
> -#define NFSD_SUPPORTED_MINOR_VERSION	1
> +#define NFSD_SUPPORTED_MINOR_VERSION	2
>  /*
>   * Maximum blocksizes supported by daemon under various circumstances.
>   */

Looks OK to me, except this should be behind a config for now.

On a grep for "minorversion" I notice two oversights, below: one just a
comment, one might result in getting the wrong minorversion on
callbacks.

--b.

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 503e15e..b86cf07 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1665,7 +1665,7 @@ out_new:
 		status = nfserr_jukebox;
 		goto out;
 	}
-	new->cl_minorversion = 1;
+	new->cl_minorversion = cstate->minorversion;
 
 	gen_clid(new);
 	add_to_unconfirmed(new, strhashval);
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
index e036894..28d41ef 100644
--- a/fs/nfsd/state.h
+++ b/fs/nfsd/state.h
@@ -108,7 +108,7 @@ struct nfs4_cb_conn {
 	u32                     cb_prog; /* used only in 4.0 case;
 					    per-session otherwise */
 	u32                     cb_ident;	/* minorversion 0 only */
-	struct svc_xprt		*cb_xprt;	/* minorversion 1 only */
+	struct svc_xprt		*cb_xprt;	/* minorversion >=1 only */
 };
 
 static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s)

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 15:26   ` J. Bruce Fields
@ 2013-02-22 15:30     ` Myklebust, Trond
  2013-02-22 15:38       ` J. Bruce Fields
  0 siblings, 1 reply; 18+ messages in thread
From: Myklebust, Trond @ 2013-02-22 15:30 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Steve Dickson, Linux NFS Mailing list

On Fri, 2013-02-22 at 10:26 -0500, J. Bruce Fields wrote:
> On Thu, Feb 21, 2013 at 05:15:11PM -0500, Steve Dickson wrote:
> > This enable NFSv4.2 support for the server. To enable this
> > code do the following:
> >   echo "+4.2" >/proc/fs/nfsd/versions
> > 
> > after the nfsd kernel module is loaded.
> > 
> > Signed-off-by: Steve Dickson <steved@redhat.com>
> > ---
> >  fs/nfsd/nfs4xdr.c | 1 +
> >  fs/nfsd/nfsd.h    | 2 +-
> >  2 files changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> > index d2ae8db..86be853 100644
> > --- a/fs/nfsd/nfs4xdr.c
> > +++ b/fs/nfsd/nfs4xdr.c
> > @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
> >  static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
> >  	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
> >  	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> > +	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> >  };
> >  
> >  static __be32
> > diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> > index 26a457b..0e3ccd1 100644
> > --- a/fs/nfsd/nfsd.h
> > +++ b/fs/nfsd/nfsd.h
> > @@ -24,7 +24,7 @@
> >  /*
> >   * nfsd version
> >   */
> > -#define NFSD_SUPPORTED_MINOR_VERSION	1
> > +#define NFSD_SUPPORTED_MINOR_VERSION	2
> >  /*
> >   * Maximum blocksizes supported by daemon under various circumstances.
> >   */
> 
> Looks OK to me, except this should be behind a config for now.
> 
> On a grep for "minorversion" I notice two oversights, below: one just a
> comment, one might result in getting the wrong minorversion on
> callbacks.
> 
> --b.
> 
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index 503e15e..b86cf07 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -1665,7 +1665,7 @@ out_new:
>  		status = nfserr_jukebox;
>  		goto out;
>  	}
> -	new->cl_minorversion = 1;
> +	new->cl_minorversion = cstate->minorversion;
>  
>  	gen_clid(new);
>  	add_to_unconfirmed(new, strhashval);
> diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
> index e036894..28d41ef 100644
> --- a/fs/nfsd/state.h
> +++ b/fs/nfsd/state.h
> @@ -108,7 +108,7 @@ struct nfs4_cb_conn {
>  	u32                     cb_prog; /* used only in 4.0 case;
>  					    per-session otherwise */
>  	u32                     cb_ident;	/* minorversion 0 only */
> -	struct svc_xprt		*cb_xprt;	/* minorversion 1 only */
> +	struct svc_xprt		*cb_xprt;	/* minorversion >=1 only */

Tagging things as being particlar to a give minorversion means that
we'll never stop having to change the comments. Why not just label it as
being the session back channel?

>  };
>  
>  static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s)

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@netapp.com
www.netapp.com

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 15:30     ` Myklebust, Trond
@ 2013-02-22 15:38       ` J. Bruce Fields
  0 siblings, 0 replies; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-22 15:38 UTC (permalink / raw)
  To: Myklebust, Trond; +Cc: J. Bruce Fields, Steve Dickson, Linux NFS Mailing list

On Fri, Feb 22, 2013 at 03:30:08PM +0000, Myklebust, Trond wrote:
> On Fri, 2013-02-22 at 10:26 -0500, J. Bruce Fields wrote:
> > On Thu, Feb 21, 2013 at 05:15:11PM -0500, Steve Dickson wrote:
> > > This enable NFSv4.2 support for the server. To enable this
> > > code do the following:
> > >   echo "+4.2" >/proc/fs/nfsd/versions
> > > 
> > > after the nfsd kernel module is loaded.
> > > 
> > > Signed-off-by: Steve Dickson <steved@redhat.com>
> > > ---
> > >  fs/nfsd/nfs4xdr.c | 1 +
> > >  fs/nfsd/nfsd.h    | 2 +-
> > >  2 files changed, 2 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> > > index d2ae8db..86be853 100644
> > > --- a/fs/nfsd/nfs4xdr.c
> > > +++ b/fs/nfsd/nfs4xdr.c
> > > @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
> > >  static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
> > >  	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
> > >  	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> > > +	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> > >  };
> > >  
> > >  static __be32
> > > diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> > > index 26a457b..0e3ccd1 100644
> > > --- a/fs/nfsd/nfsd.h
> > > +++ b/fs/nfsd/nfsd.h
> > > @@ -24,7 +24,7 @@
> > >  /*
> > >   * nfsd version
> > >   */
> > > -#define NFSD_SUPPORTED_MINOR_VERSION	1
> > > +#define NFSD_SUPPORTED_MINOR_VERSION	2
> > >  /*
> > >   * Maximum blocksizes supported by daemon under various circumstances.
> > >   */
> > 
> > Looks OK to me, except this should be behind a config for now.
> > 
> > On a grep for "minorversion" I notice two oversights, below: one just a
> > comment, one might result in getting the wrong minorversion on
> > callbacks.
> > 
> > --b.
> > 
> > diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> > index 503e15e..b86cf07 100644
> > --- a/fs/nfsd/nfs4state.c
> > +++ b/fs/nfsd/nfs4state.c
> > @@ -1665,7 +1665,7 @@ out_new:
> >  		status = nfserr_jukebox;
> >  		goto out;
> >  	}
> > -	new->cl_minorversion = 1;
> > +	new->cl_minorversion = cstate->minorversion;
> >  
> >  	gen_clid(new);
> >  	add_to_unconfirmed(new, strhashval);
> > diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
> > index e036894..28d41ef 100644
> > --- a/fs/nfsd/state.h
> > +++ b/fs/nfsd/state.h
> > @@ -108,7 +108,7 @@ struct nfs4_cb_conn {
> >  	u32                     cb_prog; /* used only in 4.0 case;
> >  					    per-session otherwise */
> >  	u32                     cb_ident;	/* minorversion 0 only */
> > -	struct svc_xprt		*cb_xprt;	/* minorversion 1 only */
> > +	struct svc_xprt		*cb_xprt;	/* minorversion >=1 only */
> 
> Tagging things as being particlar to a give minorversion means that
> we'll never stop having to change the comments.

I don't see how "minorversion >=1 only" is likely to become untrue.  Are
we really expecting to remove the session back channel in a future minor
version?

> Why not just label it as being the session back channel?

I don't really care.  Happy to take alternate text if you want to
suggest something.

--b.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 0/2] NFS v4.2 support to both the server and client (take 2)
  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  8:47 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
@ 2013-02-22 15:39 ` J. Bruce Fields
  2 siblings, 0 replies; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-22 15:39 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list

On Fri, Feb 22, 2013 at 03:47:10AM -0500, Steve Dickson wrote:
> These patche added v4.2 support to both the server and client. 
> Basically the v4.1 code is reused, but the minor version is 
> needed to enable features like label NFS.

Same comments as on previous patches.

(Sorry didn't notice there was another posting!)

--b.

> 
> Note, these patch apply on top of the lNFS: 3.8-rc3 release
> patches. Although the only conflict if applied without those patches
> would be in the Kconfig files 
> 
> Steve Dickson (2):
>   NFSv4.2: Added NFS v4.2 support to the NFS client
>   NFSDv4.2: Added NFS v4.2 support to the NFS server
> 
>  fs/nfs/Kconfig       | 12 +++++++++++-
>  fs/nfs/callback.c    |  3 +++
>  fs/nfs/nfs4client.c  |  5 +++++
>  fs/nfs/nfs4proc.c    |  3 +++
>  fs/nfs/super.c       |  7 ++++++-
>  fs/nfsd/nfs4xdr.c    |  1 +
>  fs/nfsd/nfsd.h       |  2 +-
>  include/linux/nfs4.h |  4 ++++
>  8 files changed, 34 insertions(+), 3 deletions(-)
> 
> -- 
> 1.8.1.2
> 
> --
> 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  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 ` Steve Dickson
  2013-02-22 18:05   ` J. Bruce Fields
  0 siblings, 1 reply; 18+ messages in thread
From: Steve Dickson @ 2013-02-22 17:09 UTC (permalink / raw)
  To: Trond Myklebust, J. Bruce Fields; +Cc: Linux NFS Mailing list

This enable NFSv4.2 support for the server. To enable this
code do the following:
  echo "+4.2" >/proc/fs/nfsd/versions

after the nfsd kernel module is loaded.

Signed-off-by: Steve Dickson <steved@redhat.com>
---
 fs/nfsd/nfs4state.c | 2 +-
 fs/nfsd/nfs4xdr.c   | 1 +
 fs/nfsd/nfsd.h      | 2 +-
 fs/nfsd/state.h     | 2 +-
 4 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index ac8ed96..947c550 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -1678,7 +1678,7 @@ out_new:
 		status = nfserr_jukebox;
 		goto out;
 	}
-	new->cl_minorversion = 1;
+	new->cl_minorversion = cstate->minorversion;
 
 	gen_clid(new, nn);
 	add_to_unconfirmed(new);
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index d2ae8db..86be853 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
 static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
 	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
 	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
+	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
 };
 
 static __be32
diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
index 26a457b..0e3ccd1 100644
--- a/fs/nfsd/nfsd.h
+++ b/fs/nfsd/nfsd.h
@@ -24,7 +24,7 @@
 /*
  * nfsd version
  */
-#define NFSD_SUPPORTED_MINOR_VERSION	1
+#define NFSD_SUPPORTED_MINOR_VERSION	2
 /*
  * Maximum blocksizes supported by daemon under various circumstances.
  */
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
index d1c229f..de9416b 100644
--- a/fs/nfsd/state.h
+++ b/fs/nfsd/state.h
@@ -108,7 +108,7 @@ struct nfs4_cb_conn {
 	u32                     cb_prog; /* used only in 4.0 case;
 					    per-session otherwise */
 	u32                     cb_ident;	/* minorversion 0 only */
-	struct svc_xprt		*cb_xprt;	/* minorversion 1 only */
+	struct svc_xprt		*cb_xprt;	/* minorversion >= 1 only */
 };
 
 static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s)
-- 
1.8.1.2


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 17:09 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
@ 2013-02-22 18:05   ` J. Bruce Fields
  2013-02-22 18:10     ` J. Bruce Fields
  2013-02-23 12:43     ` Steve Dickson
  0 siblings, 2 replies; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-22 18:05 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list

On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
> This enable NFSv4.2 support for the server. To enable this
> code do the following:
>   echo "+4.2" >/proc/fs/nfsd/versions

Give it a config option and we're set....

--b.

> 
> after the nfsd kernel module is loaded.
> 
> Signed-off-by: Steve Dickson <steved@redhat.com>
> ---
>  fs/nfsd/nfs4state.c | 2 +-
>  fs/nfsd/nfs4xdr.c   | 1 +
>  fs/nfsd/nfsd.h      | 2 +-
>  fs/nfsd/state.h     | 2 +-
>  4 files changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index ac8ed96..947c550 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -1678,7 +1678,7 @@ out_new:
>  		status = nfserr_jukebox;
>  		goto out;
>  	}
> -	new->cl_minorversion = 1;
> +	new->cl_minorversion = cstate->minorversion;
>  
>  	gen_clid(new, nn);
>  	add_to_unconfirmed(new);
> diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
> index d2ae8db..86be853 100644
> --- a/fs/nfsd/nfs4xdr.c
> +++ b/fs/nfsd/nfs4xdr.c
> @@ -1621,6 +1621,7 @@ struct nfsd4_minorversion_ops {
>  static struct nfsd4_minorversion_ops nfsd4_minorversion[] = {
>  	[0] = { nfsd4_dec_ops, ARRAY_SIZE(nfsd4_dec_ops) },
>  	[1] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
> +	[2] = { nfsd41_dec_ops, ARRAY_SIZE(nfsd41_dec_ops) },
>  };
>  
>  static __be32
> diff --git a/fs/nfsd/nfsd.h b/fs/nfsd/nfsd.h
> index 26a457b..0e3ccd1 100644
> --- a/fs/nfsd/nfsd.h
> +++ b/fs/nfsd/nfsd.h
> @@ -24,7 +24,7 @@
>  /*
>   * nfsd version
>   */
> -#define NFSD_SUPPORTED_MINOR_VERSION	1
> +#define NFSD_SUPPORTED_MINOR_VERSION	2
>  /*
>   * Maximum blocksizes supported by daemon under various circumstances.
>   */
> diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h
> index d1c229f..de9416b 100644
> --- a/fs/nfsd/state.h
> +++ b/fs/nfsd/state.h
> @@ -108,7 +108,7 @@ struct nfs4_cb_conn {
>  	u32                     cb_prog; /* used only in 4.0 case;
>  					    per-session otherwise */
>  	u32                     cb_ident;	/* minorversion 0 only */
> -	struct svc_xprt		*cb_xprt;	/* minorversion 1 only */
> +	struct svc_xprt		*cb_xprt;	/* minorversion >= 1 only */
>  };
>  
>  static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s)
> -- 
> 1.8.1.2
> 
> --
> 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 18:05   ` J. Bruce Fields
@ 2013-02-22 18:10     ` J. Bruce Fields
  2013-02-23 14:49       ` Steve Dickson
  2013-02-23 12:43     ` Steve Dickson
  1 sibling, 1 reply; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-22 18:10 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Steve Dickson, Trond Myklebust, Linux NFS Mailing list

On Fri, Feb 22, 2013 at 01:05:15PM -0500, J. Bruce Fields wrote:
> On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
> > This enable NFSv4.2 support for the server. To enable this
> > code do the following:
> >   echo "+4.2" >/proc/fs/nfsd/versions
> 
> Give it a config option and we're set....

Also, while you're testing these: worth firing up wireshark and checking
that "2"'s actually being sent in minorversion field, both on ordinary
compounds and on callbacks.

--b.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 18:05   ` J. Bruce Fields
  2013-02-22 18:10     ` J. Bruce Fields
@ 2013-02-23 12:43     ` Steve Dickson
  2013-02-23 13:00       ` J. Bruce Fields
  1 sibling, 1 reply; 18+ messages in thread
From: Steve Dickson @ 2013-02-23 12:43 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list



On 22/02/13 13:05, J. Bruce Fields wrote:
> On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
>> > This enable NFSv4.2 support for the server. To enable this
>> > code do the following:
>> >   echo "+4.2" >/proc/fs/nfsd/versions
> Give it a config option and we're set....
I didn't a config option in fs/nfsd/Kconfig for 4.1 which is 
the reason I didn't add one for 4.2... Should I add both?

steved.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-23 12:43     ` Steve Dickson
@ 2013-02-23 13:00       ` J. Bruce Fields
  2013-02-23 13:01         ` J. Bruce Fields
  0 siblings, 1 reply; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-23 13:00 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list

On Sat, Feb 23, 2013 at 07:43:43AM -0500, Steve Dickson wrote:
> 
> 
> On 22/02/13 13:05, J. Bruce Fields wrote:
> > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
> >> > This enable NFSv4.2 support for the server. To enable this
> >> > code do the following:
> >> >   echo "+4.2" >/proc/fs/nfsd/versions
> > Give it a config option and we're set....
> I didn't a config option in fs/nfsd/Kconfig for 4.1 which is 
> the reason I didn't add one for 4.2... Should I add both?

Well.... I guess if it defaults to off at runtime, and if there's a
config option for labeled NFS--maybe there's no harm to it.  At worst
somebody turns on 4.2 by option but hey it should be fully
spec-compliant as 4.2 is only optional stuff.

--b.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-23 13:00       ` J. Bruce Fields
@ 2013-02-23 13:01         ` J. Bruce Fields
  0 siblings, 0 replies; 18+ messages in thread
From: J. Bruce Fields @ 2013-02-23 13:01 UTC (permalink / raw)
  To: Steve Dickson; +Cc: Trond Myklebust, J. Bruce Fields, Linux NFS Mailing list

On Sat, Feb 23, 2013 at 08:00:56AM -0500, J. Bruce Fields wrote:
> On Sat, Feb 23, 2013 at 07:43:43AM -0500, Steve Dickson wrote:
> > 
> > 
> > On 22/02/13 13:05, J. Bruce Fields wrote:
> > > On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
> > >> > This enable NFSv4.2 support for the server. To enable this
> > >> > code do the following:
> > >> >   echo "+4.2" >/proc/fs/nfsd/versions
> > > Give it a config option and we're set....
> > I didn't a config option in fs/nfsd/Kconfig for 4.1 which is 
> > the reason I didn't add one for 4.2... Should I add both?
> 
> Well.... I guess if it defaults to off at runtime, and if there's a
> config option for labeled NFS--maybe there's no harm to it.  At worst
> somebody turns on 4.2 by option but hey it should be fully
> spec-compliant as 4.2 is only optional stuff.

(In other words: OK, OK, never mind, we can do without!)

--b.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server
  2013-02-22 18:10     ` J. Bruce Fields
@ 2013-02-23 14:49       ` Steve Dickson
  0 siblings, 0 replies; 18+ messages in thread
From: Steve Dickson @ 2013-02-23 14:49 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: J. Bruce Fields, Trond Myklebust, Linux NFS Mailing list



On 22/02/13 13:10, J. Bruce Fields wrote:
> On Fri, Feb 22, 2013 at 01:05:15PM -0500, J. Bruce Fields wrote:
>> On Fri, Feb 22, 2013 at 12:09:41PM -0500, Steve Dickson wrote:
>>> This enable NFSv4.2 support for the server. To enable this
>>> code do the following:
>>>   echo "+4.2" >/proc/fs/nfsd/versions
>>
>> Give it a config option and we're set....
> 
> Also, while you're testing these: worth firing up wireshark and checking
> that "2"'s actually being sent in minorversion field, both on ordinary
> compounds and on callbacks.
I just confirmed with these latest bits, minorversion is definitely getting
set to "2".

steved.
  

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2013-02-23 14:50 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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  8:47 ` [PATCH 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
2013-02-22 15:39 ` [PATCH 0/2] NFS v4.2 support to both the server and client (take 2) J. Bruce Fields
  -- strict thread matches above, loose matches on Subject: below --
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 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
2013-02-22 18:05   ` J. Bruce Fields
2013-02-22 18:10     ` J. Bruce Fields
2013-02-23 14:49       ` Steve Dickson
2013-02-23 12:43     ` Steve Dickson
2013-02-23 13:00       ` J. Bruce Fields
2013-02-23 13:01         ` J. Bruce Fields
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 2/2] NFSDv4.2: Added NFS v4.2 support to the NFS server Steve Dickson
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 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).