Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1383217pxb; Thu, 4 Feb 2021 11:27:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJzDiNavQ2R/Ad5ZtiIGhuMhdR/J9X1cvMux2v954b3Imb0Rq991JRAuOxTWNHyWpobN0xNV X-Received: by 2002:a17:906:c34d:: with SMTP id ci13mr600959ejb.333.1612466877385; Thu, 04 Feb 2021 11:27:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612466877; cv=none; d=google.com; s=arc-20160816; b=lkGrjL5equO8xEaaDdt8qpnEDiEaD+2iWQvQVsIY+AwsXFe2YMvLRT9gvDzYK2cGjT PL9leG//h7GXH4UGPbTLGS3EUW0OV18TFSUdBJTGUbhf0O66Zk1X3UN75eRElFyCzXc/ nXUFpZALbC9BzCW7R8Dzy5PeJmE6NPDGRORtEWQgf8uiOn1dbjbO4o0ornnf4Qklz94H Gc5Pg2d9gxXu7JsW9bC4ICRI9MyfvpnPsqcD2VNX6ju/CJ443LpBWQyEBFuxCtjPa7F8 EjOP1WjwjrxO83rrokg7yljmJc/WVytoIuLIZDivn+yOtFS+kXSM1NH67xk75bdR8ibP nccw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:cc:to:from :subject; bh=MFB8W1dP9eZlGpnct3QTIhWl9Kikm2lcUIGiTWkZJkc=; b=JAtJhE/XpAPKqW9J4cIVDs64GxIMOiz0CrUhAN0CdTJ9Ja5oQEc9coBPNIvo9ih/gl fAgddsjTkuM2HRP9u9nGVNqUMUHegZhj2ZWCEtH/iJ3Uvs43NpFpWmjqMdw8+Rg4THdO 7d6gbuFL/6OjqXAIocweMG5Ba536j0bPGJB81MbmZHL/Zuaxx+iIxf0V8JwKxDB24pIq eZ7bmodHTtK15tmNUA+Khh3JMfgDDKQs4df/RHlJ0A7Z1uMhYNPRlH+jYDaz6vx0savP ryc0JlkjdsE3ORkAv+4B1bgFGTZjwu2AZ7KcEHhy7Vh0+xW06rMbUCi8zs8UcWXBZ2X2 TZiQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l19si3873966ejb.324.2021.02.04.11.27.32; Thu, 04 Feb 2021 11:27:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237467AbhBDRHv (ORCPT + 99 others); Thu, 4 Feb 2021 12:07:51 -0500 Received: from mail.kernel.org ([198.145.29.99]:54414 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238259AbhBDRAB (ORCPT ); Thu, 4 Feb 2021 12:00:01 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id 047BD64F70; Thu, 4 Feb 2021 16:59:07 +0000 (UTC) Subject: [PATCH v4 2/6] xprtrdma: Simplify rpcrdma_convert_kvec() and frwr_map() From: Chuck Lever To: anna.schumaker@netapp.com Cc: linux-nfs@vger.kernel.org, linux-rdma@vger.kernel.org Date: Thu, 04 Feb 2021 11:59:07 -0500 Message-ID: <161245794724.737759.7163054588613677023.stgit@manet.1015granger.net> In-Reply-To: <161245786674.737759.8361822825753388908.stgit@manet.1015granger.net> References: <161245786674.737759.8361822825753388908.stgit@manet.1015granger.net> User-Agent: StGit/0.23-29-ga622f1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Clean up. Remove a conditional branch from the SGL set-up loop in frwr_map(): Instead of using either sg_set_page() or sg_set_buf(), initialize the mr_page field properly when rpcrdma_convert_kvec() converts the kvec to an SGL entry. frwr_map() can then invoke sg_set_page() unconditionally. Signed-off-by: Chuck Lever Reviewed-by: Tom Talpey --- net/sunrpc/xprtrdma/frwr_ops.c | 12 ++++-------- net/sunrpc/xprtrdma/rpc_rdma.c | 2 +- net/sunrpc/xprtrdma/xprt_rdma.h | 9 +++++---- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c index baca49fe83af..13a50f77dddb 100644 --- a/net/sunrpc/xprtrdma/frwr_ops.c +++ b/net/sunrpc/xprtrdma/frwr_ops.c @@ -306,14 +306,10 @@ struct rpcrdma_mr_seg *frwr_map(struct rpcrdma_xprt *r_xprt, if (nsegs > ep->re_max_fr_depth) nsegs = ep->re_max_fr_depth; for (i = 0; i < nsegs;) { - if (seg->mr_page) - sg_set_page(&mr->mr_sg[i], - seg->mr_page, - seg->mr_len, - offset_in_page(seg->mr_offset)); - else - sg_set_buf(&mr->mr_sg[i], seg->mr_offset, - seg->mr_len); + sg_set_page(&mr->mr_sg[i], + seg->mr_page, + seg->mr_len, + offset_in_page(seg->mr_offset)); ++seg; ++i; diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c index 57f9217048d8..b36b9aae0588 100644 --- a/net/sunrpc/xprtrdma/rpc_rdma.c +++ b/net/sunrpc/xprtrdma/rpc_rdma.c @@ -213,7 +213,7 @@ static struct rpcrdma_mr_seg * rpcrdma_convert_kvec(struct kvec *vec, struct rpcrdma_mr_seg *seg, unsigned int *n) { - seg->mr_page = NULL; + seg->mr_page = virt_to_page(vec->iov_base); seg->mr_offset = vec->iov_base; seg->mr_len = vec->iov_len; ++seg; diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h index 94b28657aeeb..02971e183989 100644 --- a/net/sunrpc/xprtrdma/xprt_rdma.h +++ b/net/sunrpc/xprtrdma/xprt_rdma.h @@ -283,10 +283,11 @@ enum { RPCRDMA_MAX_IOV_SEGS, }; -struct rpcrdma_mr_seg { /* chunk descriptors */ - u32 mr_len; /* length of chunk or segment */ - struct page *mr_page; /* owning page, if any */ - char *mr_offset; /* kva if no page, else offset */ +/* Arguments for DMA mapping and registration */ +struct rpcrdma_mr_seg { + u32 mr_len; /* length of segment */ + struct page *mr_page; /* underlying struct page */ + char *mr_offset; /* IN: page offset, OUT: iova */ }; /* The Send SGE array is provisioned to send a maximum size