[PATCH RFC 0/8] For discussion of bug 198053

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

 



Hi Bruce-

These are a proof-of-concept, not for merge.

This set of patches addresses the NFS/RDMA bug reported here:

https://bugzilla.kernel.org/show_bug.cgi?id=198053

However, applying them results in a regression of support for NFSv4
COMPOUNDs with multiple READ operations on TCP.

I think a different approach might be needed? I could introduce a
new transport method that would be called for READ/READLINK that
would enable the transport to determine how it wants to convey
the Reply payload. The TCP method would behave exactly as it does
today. The RDMA method would utilize a Write chunk if one is
available, otherwise, it would also behave as it does today.

If I can get that approach to work, it would both address 198053
and enable support for multiple READ operations in a COMPOUND for
both TCP and RDMA. Thoughts?

Sidebar: while working on this patch set, it occurred to me it
would be a good clean up if svc_alloc_arg could always set up a
page for rq_res->tail. Then there wouldn't have to be all the
duplicate logic for checking whether a tail exists, or if it's
large enough, etc. etc. Can you think of an easy way to grab
one of the rpc_rqst's rq_pages for this purpose?


---

Chuck Lever (8):
      nfsd: Fix NFSv4 READ on RDMA when using readv
      SUNRPC: Add XDR infrastructure for automatically padding xdr_buf::pages
      SUNRPC: TCP transport support for automated padding of xdr_buf::pages
      svcrdma: RDMA transport support for automated padding of xdr_buf::pages
      NFSD: NFSv2 support for automated padding of xdr_buf::pages
      NFSD: NFSv3 support for automated padding of xdr_buf::pages
      sunrpc: Add new contractual constraint on xdr_buf API
      SUNRPC: GSS support for automated padding of xdr_buf::pages


 fs/nfsd/nfs3xdr.c                     |   19 +-------
 fs/nfsd/nfs4xdr.c                     |   70 ++++++++-----------------------
 fs/nfsd/nfsxdr.c                      |   20 ++-------
 include/linux/sunrpc/xdr.h            |   74 +++++++++++++++++++++++++--------
 net/sunrpc/auth_gss/gss_krb5_crypto.c |   13 +++---
 net/sunrpc/auth_gss/gss_krb5_wrap.c   |   11 +++--
 net/sunrpc/auth_gss/svcauth_gss.c     |   51 +++++++++++++----------
 net/sunrpc/svc.c                      |    2 -
 net/sunrpc/svc_xprt.c                 |   14 ++++--
 net/sunrpc/svcsock.c                  |   39 +++++++++++------
 net/sunrpc/xdr.c                      |   15 ++++---
 net/sunrpc/xprtrdma/svc_rdma_rw.c     |   13 ++++++
 net/sunrpc/xprtrdma/svc_rdma_sendto.c |   27 ++++++++----
 13 files changed, 200 insertions(+), 168 deletions(-)

--
Chuck Lever



[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