Return-Path: Received: from userp1040.oracle.com ([156.151.31.81]:30552 "EHLO userp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752856AbbKLObK convert rfc822-to-8bit (ORCPT ); Thu, 12 Nov 2015 09:31:10 -0500 Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\)) Subject: Re: [PATCH] svcrdma: Do not send XDR roundup bytes for a write chunk From: Chuck Lever In-Reply-To: <20151112141907.GA6137@fieldses.org> Date: Thu, 12 Nov 2015 09:31:06 -0500 Cc: Linux NFS Mailing List , Linux RDMA Mailing List Message-Id: <25743A21-B35C-4B38-93A1-681727BFCC57@oracle.com> References: <20151016132938.8597.65237.stgit@oracle-120.nfsv4bat.org> <94E65795-E205-44FE-93DE-A1FF24CD5C2E@oracle.com> <2CF378F3-09B3-441D-9DE6-5336F0B8BF65@oracle.com> <20151112141907.GA6137@fieldses.org> To: "J. Bruce Fields" Sender: linux-nfs-owner@vger.kernel.org List-ID: > On Nov 12, 2015, at 9:19 AM, J. Bruce Fields wrote: > > On Wed, Nov 11, 2015 at 03:20:33PM -0500, Chuck Lever wrote: >> >>> On Nov 3, 2015, at 3:10 PM, Chuck Lever wrote: >>> >>> >>>> On Oct 16, 2015, at 9:30 AM, Chuck Lever wrote: >>>> >>>> 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 >>>> -- >>> >>> Bruce, can you take this for 4.4 ? >> >> Hi Bruce- >> >> Your 4.4 pull request did not include this patch. > > Whoops, sorry. > > For some reason I don't have the original email, though I do see your > first followup. Would you mind resending? > > Also, it looks like that wasn't actually sent to me? I really want > submitted patches to have my address on the To: line. Obviously I also > try to pick up stuff sent only to the mailing list, but I'm a little > more likely to miss those. Yep, my bad, I meant to address that To: you. Will repost. > But my fault either way, apologies. > > --b. > >> >> >>>> net/sunrpc/xprtrdma/svc_rdma_sendto.c | 7 +++++++ >>>> 1 files changed, 7 insertions(+), 0 deletions(-) >>>> >>>> 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-rdma" in >>>> the body of a message to majordomo@vger.kernel.org >>>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >>> — >>> Chuck Lever >>> >>> >>> >>> -- >>> 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 >> >> — >> Chuck Lever >> >> — Chuck Lever