From patchwork Mon Jan 23 20:53:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 9533437 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 501F86020B for ; Mon, 23 Jan 2017 20:54:10 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4213828375 for ; Mon, 23 Jan 2017 20:54:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 365882841C; Mon, 23 Jan 2017 20:54:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AB9E028375 for ; Mon, 23 Jan 2017 20:54:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751136AbdAWUyH (ORCPT ); Mon, 23 Jan 2017 15:54:07 -0500 Received: from mail-it0-f67.google.com ([209.85.214.67]:35931 "EHLO mail-it0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751082AbdAWUyH (ORCPT ); Mon, 23 Jan 2017 15:54:07 -0500 Received: by mail-it0-f67.google.com with SMTP id o138so11627001ito.3; Mon, 23 Jan 2017 12:53:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:from:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=YzZ0YmVHe9AMCtGFkIwDgCjRcvJvxrvijyz63TUUGBc=; b=C7mumft4P90b2mHo1DX3B7rzi1zJyZknWQoBEteodVf+GTMT8NBj6B+g4zNJo2HRGC 39imaDMWV0QFjUFFEWE74WB74WNMVITD9waRH4ETmoYykxr3ddcwKv0hbfms1BMMUJYj AeDemvgrYXLnw4ywprKeUeFcJSH+QG/ngxVMGt8Eoi+uQ8xHymC4ehDjNEe+H5Lyr6Ja +fzaLLI6oKIMY+bZtOwf5Qpc93QN1h4ogGAn5AvrmoQOJAFMRL0MZtCyTSIHPrEfp7zO buihYd/Wklrf+zgttU0rvOtkJ4T3WIh4UAlGXS22Ie3LqncZlufN3bFklrvqCteCrm8d VraA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:from:to:cc:date:message-id :in-reply-to:references:user-agent:mime-version :content-transfer-encoding; bh=YzZ0YmVHe9AMCtGFkIwDgCjRcvJvxrvijyz63TUUGBc=; b=haTXQm7b0IQ8iKdxwyQUHZtnYbCuhNXubFWAmSo3C2xCYgm2VpEDebPGVk9S7qoBS4 jIBYV0eG1ZfBIsfVGOH7p/qy6xEfQ2cLh+ydVBfYF50/IFYRl6Em0qbnZ4/EQspnvPC1 uhbeI9sc5p1GK4ZppnMncvWCM2FE66gChfZULQ3MYeQqg71SKwvtGm+n66UxJstnUfVJ 9jN1QAPEh8iL5YbuRIgBJFkF1+0qpCV/7fcjOih3ATQQSnYElb+hlfnS9f9jVH7T4eEg vd4EovS0mJcHwz1uPqqXPHaHJGQXF4XZT1M3FiT79j/v3qxRU/jLW5j6HpDLGZBqggvb lEtw== X-Gm-Message-State: AIkVDXJ+J7T/C/sxBdoS0ZmmlMyDik3QXsbXQH6bPTG6luRDP4QVDI0DCzuhhCCK9aCkeg== X-Received: by 10.36.127.73 with SMTP id r70mr17184712itc.11.1485204800721; Mon, 23 Jan 2017 12:53:20 -0800 (PST) Received: from manet.1015granger.net ([2604:8800:100:81fc:ec4:7aff:fe6c:1dce]) by smtp.gmail.com with ESMTPSA id y124sm7046075itd.19.2017.01.23.12.53.20 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Jan 2017 12:53:20 -0800 (PST) Subject: [PATCH v2 5/5] xprtrdma: Shrink send SGEs array From: Chuck Lever To: anna.schumaker@netapp.com Cc: linux-rdma@vger.kernel.org, linux-nfs@vger.kernel.org Date: Mon, 23 Jan 2017 15:53:19 -0500 Message-ID: <20170123205319.21699.50374.stgit@manet.1015granger.net> In-Reply-To: <20170123205159.21699.47373.stgit@manet.1015granger.net> References: <20170123205159.21699.47373.stgit@manet.1015granger.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP We no longer need to accommodate an xdr_buf whose pages start at an offset and cross extra page boundaries. If there are more partial or whole pages to send than there are available SGEs, the marshaling logic is now smart enough to use a Read chunk instead of failing. Signed-off-by: Chuck Lever --- net/sunrpc/xprtrdma/xprt_rdma.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) -- 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 --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index 3d7e9c9..852dd0a 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h @@ -305,16 +305,19 @@ struct rpcrdma_mr_seg { /* chunk descriptors */ char *mr_offset; /* kva if no page, else offset */ }; -/* Reserve enough Send SGEs to send a maximum size inline request: +/* The Send SGE array is provisioned to send a maximum size + * inline request: * - RPC-over-RDMA header * - xdr_buf head iovec - * - RPCRDMA_MAX_INLINE bytes, possibly unaligned, in pages + * - RPCRDMA_MAX_INLINE bytes, in pages * - xdr_buf tail iovec + * + * The actual number of array elements consumed by each RPC + * depends on the device's max_sge limit. */ enum { RPCRDMA_MIN_SEND_SGES = 3, - RPCRDMA_MAX_SEND_PAGES = PAGE_SIZE + RPCRDMA_MAX_INLINE - 1, - RPCRDMA_MAX_PAGE_SGES = (RPCRDMA_MAX_SEND_PAGES >> PAGE_SHIFT) + 1, + RPCRDMA_MAX_PAGE_SGES = RPCRDMA_MAX_INLINE >> PAGE_SHIFT, RPCRDMA_MAX_SEND_SGES = 1 + 1 + RPCRDMA_MAX_PAGE_SGES + 1, };