Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp417879pxb; Wed, 3 Feb 2021 08:26:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJwx0oFQAHUYrh0pEIfdqO3qo77wfKaAw7nxrgNapgK3pNiGRtcSbWqET6am5W134VsOUqIj X-Received: by 2002:a17:906:19c3:: with SMTP id h3mr3905978ejd.429.1612369596691; Wed, 03 Feb 2021 08:26:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612369596; cv=none; d=google.com; s=arc-20160816; b=mTm4tJVP0BTV4fBoEusQYbjR05H6Euc1E5aqs85S8IZPySbFr2hf4Zq2zSRWesLeqW EB5lfCEUo7HqMIHhHkMkUqfzKrDXVxDfx8p7mkmBthDmOkPRp//AA/iITQKXK/U2IzpH W1kuceNZF3um8j0aEARP43FHI9kc3V6eRdhaqiuTZGGElol2UjTY7r4EgMU1npbSqiFV bRkYvUzYOIZ4l9+e+PJm/ONMr8iXC8L4KTfSJW2nwh34uiO4c5cNXyvvJCE82FE2HJyo XQ0L7+g/04wgbXK6zhrM0V4Fio0ZnZhWNrbiRuZNKm7Amo2gDSCmu253DBbuzVpOqpAx V8Fw== 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:to:from:subject; bh=PPUpcSOhpS/UO/S7s7XdGmMFkhMz8G6Smho/2niZBcQ=; b=UNbmsWWc5QRvEysnJcUnwsq4BeNcTJV1ndNakwFv9vdvqcl6Mc7QAxwT78POiWlqmY x90Xa5Cg0TzdZgrY2lAPkEY8RNsg/uX1dqyfdTia02WbEGSy8hP1r/achdpNQY+cQIEw EujzAMeXdrM0msFGyZIUHw0QKTR7EGdMfGSkdjvTZLQ5/3L1zJWN/xBQYqZsMFIaRuwV C5XwocVEDRh5osm9mavlExQnSo1vuhVRT6I5IuWr6R4Rr5Lwp4QuGAWMb/owXnzyNx0E muhFuSgFdftTGnewqgzpUVXIU2FLGWBWBMaWcxKqYqmzF+4jW/ysd0+eRn9npxFcXKvf NpDw== 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 y11si1514958edr.575.2021.02.03.08.26.10; Wed, 03 Feb 2021 08:26:36 -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 S233500AbhBCQYw (ORCPT + 99 others); Wed, 3 Feb 2021 11:24:52 -0500 Received: from mail.kernel.org ([198.145.29.99]:40188 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229663AbhBCQYt (ORCPT ); Wed, 3 Feb 2021 11:24:49 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id D920264F86; Wed, 3 Feb 2021 16:24:07 +0000 (UTC) Subject: [PATCH v2 3/6] xprtrdma: Refactor invocations of offset_in_page() From: Chuck Lever To: linux-nfs@vger.kernel.org, linux-rdma@vger.kernel.org Date: Wed, 03 Feb 2021 11:24:07 -0500 Message-ID: <161236944700.1030487.6859398915626711523.stgit@manet.1015granger.net> In-Reply-To: <161236925476.1030487.10407536259816633879.stgit@manet.1015granger.net> References: <161236925476.1030487.10407536259816633879.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 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