Re: [PATCH v2 0/4] nfs/nfsd/sunrpc: enforce NFSv4 transport requirements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2017-02-24 at 10:38 -0800, Chuck Lever wrote:
> > On Feb 24, 2017, at 10:25 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
> > 
> > v2: comment clarifications, and commit log cleanup. No functional changes.
> > 
> > RFC5661 says:
> > 
> >   NFSv4.1 works over Remote Direct Memory Access (RDMA) and non-RDMA-
> >   based transports with the following attributes:
> > 
> > 
> >   o  The transport supports reliable delivery of data, which NFSv4.1
> >      requires but neither NFSv4.1 nor RPC has facilities for ensuring
> >      [34].
> > 
> >   o  The transport delivers data in the order it was sent.  Ordered
> >      delivery simplifies detection of transmit errors, and simplifies
> >      the sending of arbitrary sized requests and responses via the
> >      record marking protocol [3].
> > 
> > ...and then some hand-wavy stuff about congestion control. RFC7530
> > doesn't mention needing reliable and ordered delivery, but it does need
> > congestion control.
> > 
> > In practical terms, that means we should be excluding NFSv4 from UDP
> > transports. The NFS server has never enforced this requirement,
> > however, so a user could issue NFSv4 calls against the server via UDP.
> 
> RPC-over-RDMA Version One requires the use of RDMA Reliable
> Connections, which is a layer above the link layer that
> provides reliable, in-order delivery using connection
> semantics. This meets all stated transport requirements in
> RFC 5661.
> 
> The language of RFC 5661 says that UDP by itself must not be
> used for NFSv4. IMO the use of Reliable Connections with
> RPC-over-RDMA makes this a non-issue for NFSv4, even for RoCE
> v2.
> 
> rfc5667bis-06 was submitted this morning to address this.
> 

Thanks, I may plagiarize you and update the comment in rdma_create_xprt
if that's ok:

+       /*
+        * RPC-over-RDMA Version One requires the use of RDMA Reliable
+        * Connections, which is a layer above the link layer that provides
+        * reliable, in-order delivery using connection semantics.
+        */

I won't bother to re-post just for that though.

> > This patchset adds a small bit of infrastructure to the sunrpc layer to
> > enforce this requirement, and has the nfs and nfsd layers set the
> > appropriate flags for it on their server-side transports. It also has
> > the rpcbind client skip registering the protocol version on a UDP port
> > when that flag is set.
> > 
> > Lightly tested by hand, but it's fairly straightforward.
> > 
> > Jeff Layton (4):
> >  sunrpc: turn bitfield flags in svc_version into bools
> >  sunrpc: flag transports as having both reliable and ordered delivery,
> >    and congestion control
> >  nfs/nfsd/sunrpc: enforce transport requirements for NFSv4
> >  sunrpc: don't register UDP port with rpcbind when version needs
> >    congestion control
> > 
> > fs/nfs/callback_xdr.c                    |  6 ++++--
> > fs/nfsd/nfs2acl.c                        |  1 -
> > fs/nfsd/nfs3acl.c                        |  1 -
> > fs/nfsd/nfs4proc.c                       | 13 +++++++------
> > include/linux/sunrpc/svc.h               | 12 ++++++++----
> > include/linux/sunrpc/svc_xprt.h          |  1 +
> > net/sunrpc/svc.c                         | 23 ++++++++++++++++++++++-
> > net/sunrpc/svcsock.c                     |  1 +
> > net/sunrpc/xprtrdma/svc_rdma_transport.c |  8 ++++++++
> > 9 files changed, 51 insertions(+), 15 deletions(-)
> > 
> > -- 
> > 2.9.3
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> Chuck Lever
> 
> 
> 

-- 
Jeff Layton <jlayton@xxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux