Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp495411pxb; Wed, 3 Feb 2021 10:11:46 -0800 (PST) X-Google-Smtp-Source: ABdhPJxbzURQCpVmfKm61YuM+HRI31eUwwIBzWNO668iXV8ECRcrCDLI8uYvlDYMxD4Rt9dm/Qn0 X-Received: by 2002:a17:906:118f:: with SMTP id n15mr4478388eja.497.1612375906489; Wed, 03 Feb 2021 10:11:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612375906; cv=none; d=google.com; s=arc-20160816; b=TXUH8aMN4jo4ElrotFCNvJf9xA2Z9nbpWTOjYXcrqL30bvH0yERE4U9Ke7jI3KvwiV 108FJLM2LChVOb5TqsjwWdrrF8JvYqDUDl5LonwXeKhz6qpJ2ZgLvG5mNoZV7xrYkIG1 Bxl2B1fJb5Sj0vf1ylS9kmj5T+FWE6/OIwCjTr4PCIvu1DpKB6q2u1pSopYn919fTBs5 oAyliBS+0Km24u+P0/ePebM003IoUxRJTxSepa3SVa+FufsFmWbFFZCfEh0al/rm2W3N 6A4b0N9eWGvSoh3TYJVC6tj6ZTdpu1hAnzcUtBdG1VFL/9VkaW6iw5qdZN6Yi9AaRsb5 8lag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :to:subject; bh=IFhzeZqTgbaJeNWIuj61Ise4af0pjXRuJmW5qvPRVNc=; b=gQmdFVhLrpYUNz9Foqgu8+IgGRWv01Kp+ymZaW1mHjA1AlwixpcOHYDTNbg4aNU+EN HWeUfoLyc0xGG7C0h80I+wc3ITc0Jwj8q4m+WvoMcxNY89TlKDOQCtAYsDz2KUHkFLh0 /M5rE1ln92eGypv2JHAbGc+pT/7rUo0bnt/HwcDqFDozNvMQcphxH+wqomI973gC/Jpl x0Wu3PmQpjVIX8562weWdnDhssPSTvtdBMnbBYIJjBRq4RlkGWdCb8ZaxChCyogG/qWb suPSnCg7V9e0Q3rPDnLiIU5PpCTBGqQ6mJHFcmAFuIpH0Nj2qN58CgcNG9yPtd3263k8 kQyQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v1si1818816edb.592.2021.02.03.10.11.21; Wed, 03 Feb 2021 10:11:46 -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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232108AbhBCSKr (ORCPT + 99 others); Wed, 3 Feb 2021 13:10:47 -0500 Received: from p3plsmtpa11-08.prod.phx3.secureserver.net ([68.178.252.109]:54032 "EHLO p3plsmtpa11-08.prod.phx3.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231210AbhBCSKq (ORCPT ); Wed, 3 Feb 2021 13:10:46 -0500 Received: from [192.168.0.116] ([71.184.94.153]) by :SMTPAUTH: with ESMTPSA id 7MbHl2UbMK9xx7MbHl6aLK; Wed, 03 Feb 2021 11:09:59 -0700 X-CMAE-Analysis: v=2.4 cv=K9/nowaI c=1 sm=1 tr=0 ts=601ae6f7 a=vbvdVb1zh1xTTaY8rfQfKQ==:117 a=vbvdVb1zh1xTTaY8rfQfKQ==:17 a=IkcTkHD0fZMA:10 a=SEc3moZ4AAAA:8 a=yPCof4ZbAAAA:8 a=uK9x7qIAqltwvDw9cpgA:9 a=QEXdDO2ut3YA:10 a=5oRCH6oROnRZc2VpWJZ3:22 X-SECURESERVER-ACCT: tom@talpey.com Subject: Re: [PATCH v2 3/6] xprtrdma: Refactor invocations of offset_in_page() To: Chuck Lever , linux-nfs@vger.kernel.org, linux-rdma@vger.kernel.org References: <161236925476.1030487.10407536259816633879.stgit@manet.1015granger.net> <161236944700.1030487.6859398915626711523.stgit@manet.1015granger.net> From: Tom Talpey Message-ID: Date: Wed, 3 Feb 2021 13:09:59 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 MIME-Version: 1.0 In-Reply-To: <161236944700.1030487.6859398915626711523.stgit@manet.1015granger.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4xfKPSsx75e/HBws/90mtJpiNefLmmCn0Pj0cwCQUzMiDep160USugv0HQwtOInYInM14Kt5yzXhYUd794g2Oof9iLWBf/p9OJkNfkmIGVpQ9pozdmxoxJ FQ8S8wPMgoaSL7wSFBJAWHNwHmpjt5+0epO65p/iNAM7v34bwfwJmADBP/j1eBrHpdZ82dYjRBJ1UzqSONADRNhlt9CTbC2kRInQpUGaV8MMjSfkLuDAVJnu 6fEx8bBhf8c6kRxEBo+kz0ca6QJluv/yfKLw2HKrnI0= Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org This looks good, but the earlier 1/6 patch depends on the offset_in_page conversion in rpcrdma_convert_kvec. Won't that complicate any bisection? Reviewed-By: Tom Talpey On 2/3/2021 11:24 AM, Chuck Lever wrote: > Clean up so that offset_in_page() is invoked less often in the > most common case, which is mapping xdr->pages. > > Signed-off-by: Chuck Lever > --- > net/sunrpc/xprtrdma/frwr_ops.c | 8 +++----- > net/sunrpc/xprtrdma/rpc_rdma.c | 4 ++-- > net/sunrpc/xprtrdma/xprt_rdma.h | 2 +- > 3 files changed, 6 insertions(+), 8 deletions(-) > > diff --git a/net/sunrpc/xprtrdma/frwr_ops.c b/net/sunrpc/xprtrdma/frwr_ops.c > index 13a50f77dddb..766a1048a48a 100644 > --- a/net/sunrpc/xprtrdma/frwr_ops.c > +++ b/net/sunrpc/xprtrdma/frwr_ops.c > @@ -306,16 +306,14 @@ 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;) { > - sg_set_page(&mr->mr_sg[i], > - seg->mr_page, > - seg->mr_len, > - offset_in_page(seg->mr_offset)); > + sg_set_page(&mr->mr_sg[i], seg->mr_page, > + seg->mr_len, seg->mr_offset); > > ++seg; > ++i; > if (ep->re_mrtype == IB_MR_TYPE_SG_GAPS) > continue; > - if ((i < nsegs && offset_in_page(seg->mr_offset)) || > + if ((i < nsegs && seg->mr_offset) || > offset_in_page((seg-1)->mr_offset + (seg-1)->mr_len)) > break; > } > diff --git a/net/sunrpc/xprtrdma/rpc_rdma.c b/net/sunrpc/xprtrdma/rpc_rdma.c > index 529adb6ad4db..b3e66b8f65ab 100644 > --- a/net/sunrpc/xprtrdma/rpc_rdma.c > +++ b/net/sunrpc/xprtrdma/rpc_rdma.c > @@ -215,7 +215,7 @@ rpcrdma_convert_kvec(struct kvec *vec, struct rpcrdma_mr_seg *seg, > { > if (vec->iov_len) { > seg->mr_page = virt_to_page(vec->iov_base); > - seg->mr_offset = vec->iov_base; > + seg->mr_offset = offset_in_page(vec->iov_base); > seg->mr_len = vec->iov_len; > ++seg; > ++(*n); > @@ -248,7 +248,7 @@ rpcrdma_convert_iovs(struct rpcrdma_xprt *r_xprt, struct xdr_buf *xdrbuf, > page_base = offset_in_page(xdrbuf->page_base); > while (len) { > seg->mr_page = *ppages; > - seg->mr_offset = (char *)page_base; > + seg->mr_offset = page_base; > seg->mr_len = min_t(u32, PAGE_SIZE - page_base, len); > len -= seg->mr_len; > ++ppages; > diff --git a/net/sunrpc/xprtrdma/xprt_rdma.h b/net/sunrpc/xprtrdma/xprt_rdma.h > index 02971e183989..ed1c5444fb9d 100644 > --- a/net/sunrpc/xprtrdma/xprt_rdma.h > +++ b/net/sunrpc/xprtrdma/xprt_rdma.h > @@ -287,7 +287,7 @@ enum { > 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 */ > + u64 mr_offset; /* IN: page offset, OUT: iova */ > }; > > /* The Send SGE array is provisioned to send a maximum size > > >