From patchwork Mon Aug 14 19:16:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 9899971 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 6ACE1602D9 for ; Mon, 14 Aug 2017 19:17:07 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5F0B128464 for ; Mon, 14 Aug 2017 19:17:07 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 53FE5286FF; Mon, 14 Aug 2017 19:17:07 +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 080AD28464 for ; Mon, 14 Aug 2017 19:17:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752064AbdHNTRE (ORCPT ); Mon, 14 Aug 2017 15:17:04 -0400 Received: from mail-io0-f195.google.com ([209.85.223.195]:34011 "EHLO mail-io0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751810AbdHNTRC (ORCPT ); Mon, 14 Aug 2017 15:17:02 -0400 Received: by mail-io0-f195.google.com with SMTP id m88so8068360iod.1 for ; Mon, 14 Aug 2017 12:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=TvXULeWS4AH4DOgv5FVhNoxqtbdAhhUCude5Sje/SL4=; b=ROAQbI+5Xyg2pWoFAs4Qr1qQrn885Q3imlqYEWZBlK5Hfm+AeT3m/SAw8F95hUStWz Rv34QQezyUgngpI3n1YAB83iNbLpZRnStRBdIgl2qwZ5KvcsM3I6NxkH3BzTfsNe5pm/ mJQfJATKbOfdZX4h3Q4UxhjAAc7jNo6KImYz2y90UjzL31sSOO4BqI6VRskvuXueKiq6 i29MbmgGIH8J7bKRvOLdvZabIdpjvN+SzlT8YnMw/nL94ilsUrKlM61GLVuMDUW5STWZ 72N1odkq25LCmJvgxOP7EyOERQjq4pvSL8trvUbOS6rDrHhju6xG4arl13WEFta1hpHu EV9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=TvXULeWS4AH4DOgv5FVhNoxqtbdAhhUCude5Sje/SL4=; b=XDd9iHfJLrlUu9IeNwmyy/VR6lgHokFsDO9SpEJIKjmhkVPHafHAsjmQxJ1poh/WjI oEQeiG0T3po5LfqX1V7l4ePC6wqfmdaaz3P7nJ3bPEZsAiqfg532zF+DW6g3QQwnTWJL s4S2EgRJOBSQg/mnOEGfHf/16t9SLqgqOvEHbHNDbkg1SkrUFfIAZNhKdZg88CgaH7nK 6ogrHiE76HVo10dGUJOjRPjAsma9RM735zhuWxZMZk8CQu9ZyoZgtMTYx7OwL/vucLgj WeZJwJJHNGjwghA9t66llZr/qa3Pu7k0IR0t6HWeN2heJHQE59ld0kbKTf6RnDacfQbK L2pg== X-Gm-Message-State: AHYfb5hDnKndcFZTnwxRDeJK/IEPNWU8rXpHVlbmT+RfmsNT3dSnx4kg fh8rbSj4j8V7MFlk23g= X-Received: by 10.107.46.38 with SMTP id i38mr19301402ioo.116.1502738221783; Mon, 14 Aug 2017 12:17:01 -0700 (PDT) Received: from localhost.localdomain (c-68-49-162-121.hsd1.mi.comcast.net. [68.49.162.121]) by smtp.gmail.com with ESMTPSA id k12sm10729itk.29.2017.08.14.12.16.59 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 Aug 2017 12:16:59 -0700 (PDT) From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 3/3] SUNRPC: Cleanup xs_tcp_read_common() Date: Mon, 14 Aug 2017 15:16:52 -0400 Message-Id: <20170814191652.18263-4-trond.myklebust@primarydata.com> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170814191652.18263-3-trond.myklebust@primarydata.com> References: <20170814191652.18263-1-trond.myklebust@primarydata.com> <20170814191652.18263-2-trond.myklebust@primarydata.com> <20170814191652.18263-3-trond.myklebust@primarydata.com> 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 Simplify the code to avoid a full copy of the struct xdr_skb_reader. Signed-off-by: Trond Myklebust --- net/sunrpc/xprtsock.c | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 12f4c9b2857c..27858d5819ad 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -1287,25 +1287,12 @@ static inline void xs_tcp_read_common(struct rpc_xprt *xprt, } len = desc->count; - if (len > transport->tcp_reclen - transport->tcp_offset) { - struct xdr_skb_reader my_desc; - - len = transport->tcp_reclen - transport->tcp_offset; - memcpy(&my_desc, desc, sizeof(my_desc)); - my_desc.count = len; - r = xdr_partial_copy_from_skb(rcvbuf, transport->tcp_copied, - &my_desc, xdr_skb_read_bits); - desc->count -= r; - desc->offset += r; - } else - r = xdr_partial_copy_from_skb(rcvbuf, transport->tcp_copied, + if (len > transport->tcp_reclen - transport->tcp_offset) + desc->count = transport->tcp_reclen - transport->tcp_offset; + r = xdr_partial_copy_from_skb(rcvbuf, transport->tcp_copied, desc, xdr_skb_read_bits); - if (r > 0) { - transport->tcp_copied += r; - transport->tcp_offset += r; - } - if (r != len) { + if (desc->count) { /* Error when copying to the receive buffer, * usually because we weren't able to allocate * additional buffer pages. All we can do now @@ -1325,6 +1312,10 @@ static inline void xs_tcp_read_common(struct rpc_xprt *xprt, return; } + transport->tcp_copied += r; + transport->tcp_offset += r; + desc->count = len - r; + dprintk("RPC: XID %08x read %zd bytes\n", ntohl(transport->tcp_xid), r); dprintk("RPC: xprt = %p, tcp_copied = %lu, tcp_offset = %u, "