Re: Fwd: [PATCH] svcrdma: Do not send XDR roundup bytes for a write chunk

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

 



On Thu, Nov 12, 2015 at 09:47:13AM -0500, Chuck Lever wrote:
> I wish git send-mail had an address book. I’m really tired
> of misspelling the to/cc addresses on patches.

Hah.  Yeah, my hack is a text file of addresses that I cut-and-paste
from.

--b.

> 
> Resending so there is one thread for all replies. Apologies
> for the noise.
> 
> 
> > Begin forwarded message:
> > 
> > From: Chuck Lever <chuck.lever@xxxxxxxxxx>
> > Subject: [PATCH] svcrdma: Do not send XDR roundup bytes for a write chunk
> > Date: November 12, 2015 at 9:44:33 AM EST
> > To: bfields@xxxxxxxxxxxx
> > Cc: linux-nfs@xxxxxxxxxxxxxxx, linux-rmda@xxxxxxxxxxxxxxx
> > 
> > Minor optimization: when dealing with write chunk XDR roundup, do
> > not post a Write WR for the zero bytes in the pad. Simply update
> > the write segment in the RPC-over-RDMA header to reflect the extra
> > pad bytes.
> > 
> > The Reply chunk is also a write chunk, but the server does not use
> > send_write_chunks() to send the Reply chunk. That's OK in this case:
> > the server Upper Layer typically marshals the Reply chunk contents
> > in a single contiguous buffer, without a separate tail for the XDR
> > pad.
> > 
> > The comments and the variable naming refer to "chunks" but what is
> > really meant is "segments." The existing code sends only one
> > xdr_write_chunk per RPC reply.
> > 
> > The fix assumes this as well. When the XDR pad in the first write
> > chunk is reached, the assumption is the Write list is complete and
> > send_write_chunks() returns.
> > 
> > That will remain a valid assumption until the server Upper Layer can
> > support multiple bulk payload results per RPC.
> > 
> > Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx>
> > ---
> > net/sunrpc/xprtrdma/svc_rdma_sendto.c |    7 +++++++
> > 1 file changed, 7 insertions(+)
> > 
> > diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
> > index 1dfae83..6c48901 100644
> > --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
> > +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
> > @@ -342,6 +342,13 @@ static int send_write_chunks(struct svcxprt_rdma *xprt,
> > 						arg_ch->rs_handle,
> > 						arg_ch->rs_offset,
> > 						write_len);
> > +
> > +		/* Do not send XDR pad bytes */
> > +		if (chunk_no && write_len < 4) {
> > +			chunk_no++;
> > +			break;
> > +		}
> > +
> > 		chunk_off = 0;
> > 		while (write_len) {
> > 			ret = send_write(xprt, rqstp,
> > 
> > --
> > 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
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux