diff mbox

nfsd: default NFSv4.2 to on

Message ID 20150202161557.GF22301@fieldses.org (mailing list archive)
State New, archived
Headers show

Commit Message

J. Bruce Fields Feb. 2, 2015, 4:15 p.m. UTC
From: "J. Bruce Fields" <bfields@redhat.com>

The code seems to work.  The protocol looks stable.  The kernel's
version defaults can be overridden by rpc.nfsd arguments.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
---
 fs/nfsd/nfssvc.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Christoph Hellwig Feb. 11, 2015, 12:37 p.m. UTC | #1
On Mon, Feb 02, 2015 at 11:15:57AM -0500, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <bfields@redhat.com>
> 
> The code seems to work.  The protocol looks stable.  The kernel's
> version defaults can be overridden by rpc.nfsd arguments.

Does it really make sense to enabled this without READ_PLUS support
or implementing the various new attributes?

Also should we add a wiki page with the 4.2 status?
--
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
J. Bruce Fields Feb. 11, 2015, 2:12 p.m. UTC | #2
On Wed, Feb 11, 2015 at 04:37:57AM -0800, Christoph Hellwig wrote:
> On Mon, Feb 02, 2015 at 11:15:57AM -0500, J. Bruce Fields wrote:
> > From: "J. Bruce Fields" <bfields@redhat.com>
> > 
> > The code seems to work.  The protocol looks stable.  The kernel's
> > version defaults can be overridden by rpc.nfsd arguments.
> 
> Does it really make sense to enabled this without READ_PLUS support
> or implementing the various new attributes?

I think so.  That's all optional--e.g. for READ_PLUS clients can
determine server support using ERR_OP_NOTSUPP (or whatever it's called),
and for attributes they can query the supported_attributes attribute.
It's possible we'll never support everything in 4.2.

> Also should we add a wiki page with the 4.2 status?

Sounds like a good idea.

--b.
--
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
Christoph Hellwig Feb. 11, 2015, 2:16 p.m. UTC | #3
On Wed, Feb 11, 2015 at 09:12:57AM -0500, J. Bruce Fields wrote:
> I think so.  That's all optional--e.g. for READ_PLUS clients can
> determine server support using ERR_OP_NOTSUPP (or whatever it's called),
> and for attributes they can query the supported_attributes attribute.
> It's possible we'll never support everything in 4.2.

The questions is if we need a useful subset of 4.2 to bother.  I doubt
we'll ever bother with ADBs for example, and the copy offload might
take a while to get everyting sorted.  But exposting most attributes
and supporting READ_PLUS sounds like important enought to implement
before considering 4.2 ready.

--
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
J. Bruce Fields Feb. 11, 2015, 2:54 p.m. UTC | #4
On Wed, Feb 11, 2015 at 06:16:19AM -0800, Christoph Hellwig wrote:
> On Wed, Feb 11, 2015 at 09:12:57AM -0500, J. Bruce Fields wrote:
> > I think so.  That's all optional--e.g. for READ_PLUS clients can
> > determine server support using ERR_OP_NOTSUPP (or whatever it's called),
> > and for attributes they can query the supported_attributes attribute.
> > It's possible we'll never support everything in 4.2.
> 
> The questions is if we need a useful subset of 4.2 to bother.

Internally the virtualization people have been interested in ALLOCATE,
SEEK, and security labels, so I'm assuming we've passed that sort of
minimum "is there any benefit at all to turning this on" threshhold.

> I doubt we'll ever bother with ADBs for example, and the copy offload
> might take a while to get everyting sorted.  But exposting most
> attributes and supporting READ_PLUS sounds like important enought to
> implement before considering 4.2 ready.

I agree there's a documentation and marketing problem: it would simplify
communication with users if "this server supports 4.2" reliably meant
support for some minimum list of features.  Is that what you're thinking
about?

Individual distros and other server vendors may make their own decisions
here, so I don't know if we do much about that on our own.

We could also add a little more data e.g. to /proc/self/mountstats to
help figure out stuff like "why does copying a big file go so much
faster on server X than server Y?".

--b.
--
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 Feb. 11, 2015, 3:15 p.m. UTC | #5
On Wed, Feb 11, 2015 at 9:54 AM, J. Bruce Fields <bfields@fieldses.org> wrote:
> On Wed, Feb 11, 2015 at 06:16:19AM -0800, Christoph Hellwig wrote:
>> On Wed, Feb 11, 2015 at 09:12:57AM -0500, J. Bruce Fields wrote:
>> > I think so.  That's all optional--e.g. for READ_PLUS clients can
>> > determine server support using ERR_OP_NOTSUPP (or whatever it's called),
>> > and for attributes they can query the supported_attributes attribute.
>> > It's possible we'll never support everything in 4.2.
>>
>> The questions is if we need a useful subset of 4.2 to bother.
>
> Internally the virtualization people have been interested in ALLOCATE,
> SEEK, and security labels, so I'm assuming we've passed that sort of
> minimum "is there any benefit at all to turning this on" threshhold.

ACK. There is client support for that functionality that hooks into
well established system calls, which means that applications can use
it now without much in the way of changes (if at all).

>> I doubt we'll ever bother with ADBs for example, and the copy offload
>> might take a while to get everyting sorted.  But exposting most
>> attributes and supporting READ_PLUS sounds like important enought to
>> implement before considering 4.2 ready.
>
> I agree there's a documentation and marketing problem: it would simplify
> communication with users if "this server supports 4.2" reliably meant
> support for some minimum list of features.  Is that what you're thinking
> about?

None of our NFSv4 versions are 100% feature complete. Our approach on
both the client and server has been to take the functionality that is
useful to us and implement that first.
For instance, NFSv4.1 is still missing RPCSEC_GSS on the callback
channel. I do want to implement that feature some day, but that
doesn't stop me from considering NFSv4.1 to be useful in the state it
is today.

> Individual distros and other server vendors may make their own decisions
> here, so I don't know if we do much about that on our own.
>
> We could also add a little more data e.g. to /proc/self/mountstats to
> help figure out stuff like "why does copying a big file go so much
> faster on server X than server Y?".

We already have that information. As we add new RPC calls on the
client, we add corresponding entries in /proc/self/mountstats. When
copy offload goes in, it will have its own entry there, and you will
see the usage counts being bumped whenever an application calls it.
J. Bruce Fields Feb. 11, 2015, 3:32 p.m. UTC | #6
On Wed, Feb 11, 2015 at 10:15:43AM -0500, Trond Myklebust wrote:
> On Wed, Feb 11, 2015 at 9:54 AM, J. Bruce Fields <bfields@fieldses.org> wrote:
> > On Wed, Feb 11, 2015 at 06:16:19AM -0800, Christoph Hellwig wrote:
> >> On Wed, Feb 11, 2015 at 09:12:57AM -0500, J. Bruce Fields wrote:
> >> > I think so.  That's all optional--e.g. for READ_PLUS clients can
> >> > determine server support using ERR_OP_NOTSUPP (or whatever it's called),
> >> > and for attributes they can query the supported_attributes attribute.
> >> > It's possible we'll never support everything in 4.2.
> >>
> >> The questions is if we need a useful subset of 4.2 to bother.
> >
> > Internally the virtualization people have been interested in ALLOCATE,
> > SEEK, and security labels, so I'm assuming we've passed that sort of
> > minimum "is there any benefit at all to turning this on" threshhold.
> 
> ACK. There is client support for that functionality that hooks into
> well established system calls, which means that applications can use
> it now without much in the way of changes (if at all).
> 
> >> I doubt we'll ever bother with ADBs for example, and the copy offload
> >> might take a while to get everyting sorted.  But exposting most
> >> attributes and supporting READ_PLUS sounds like important enought to
> >> implement before considering 4.2 ready.
> >
> > I agree there's a documentation and marketing problem: it would simplify
> > communication with users if "this server supports 4.2" reliably meant
> > support for some minimum list of features.  Is that what you're thinking
> > about?
> 
> None of our NFSv4 versions are 100% feature complete. Our approach on
> both the client and server has been to take the functionality that is
> useful to us and implement that first.
> For instance, NFSv4.1 is still missing RPCSEC_GSS on the callback
> channel. I do want to implement that feature some day, but that
> doesn't stop me from considering NFSv4.1 to be useful in the state it
> is today.
> 
> > Individual distros and other server vendors may make their own decisions
> > here, so I don't know if we do much about that on our own.
> >
> > We could also add a little more data e.g. to /proc/self/mountstats to
> > help figure out stuff like "why does copying a big file go so much
> > faster on server X than server Y?".
> 
> We already have that information. As we add new RPC calls on the
> client, we add corresponding entries in /proc/self/mountstats. When
> copy offload goes in, it will have its own entry there, and you will
> see the usage counts being bumped whenever an application calls it.

Oh, and looking now--I'd forgotten that we also support the
supported-attributes bitmaps.

Maybe that covers everything.

Someone could also add a server-side interface for querying features
like this if it seemed useful.

--b.
--
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
Thomas Haynes Feb. 11, 2015, 6:12 p.m. UTC | #7
On Wed, Feb 11, 2015 at 09:54:13AM -0500, J. Bruce Fields wrote:
> 
> I agree there's a documentation and marketing problem: it would simplify
> communication with users if "this server supports 4.2" reliably meant
> support for some minimum list of features.
> 

The "marketing" message over NFSv4.2 has been pretty consistent - everything
is optional and a fully compliant server can return not supported for
every new feature. I.e., a NFSv4.2 server is pretty simple if you have
an existing NFSv4.1 server.
--
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
J. Bruce Fields Feb. 11, 2015, 6:27 p.m. UTC | #8
On Wed, Feb 11, 2015 at 10:12:31AM -0800, Tom Haynes wrote:
> On Wed, Feb 11, 2015 at 09:54:13AM -0500, J. Bruce Fields wrote:
> > 
> > I agree there's a documentation and marketing problem: it would simplify
> > communication with users if "this server supports 4.2" reliably meant
> > support for some minimum list of features.
> > 
> 
> The "marketing" message over NFSv4.2 has been pretty consistent - everything
> is optional and a fully compliant server can return not supported for
> every new feature. I.e., a NFSv4.2 server is pretty simple if you have
> an existing NFSv4.1 server.

Yes, and I like that, but it's not without tradeoffs.

--b.
--
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/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index 314f5c8f8f1a..9277cc91c21b 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -119,6 +119,7 @@  struct svc_program		nfsd_program = {
 static bool nfsd_supported_minorversions[NFSD_SUPPORTED_MINOR_VERSION + 1] = {
 	[0] = 1,
 	[1] = 1,
+	[2] = 1,
 };
 
 int nfsd_vers(int vers, enum vers_op change)