From patchwork Wed Feb 20 03:03:38 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 10821129 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4097C180E for ; Wed, 20 Feb 2019 03:04:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 295AB2C309 for ; Wed, 20 Feb 2019 03:04:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1D6A52C399; Wed, 20 Feb 2019 03:04:53 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 A9BC42C315 for ; Wed, 20 Feb 2019 03:04:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729770AbfBTDEw (ORCPT ); Tue, 19 Feb 2019 22:04:52 -0500 Received: from mail-it1-f195.google.com ([209.85.166.195]:40263 "EHLO mail-it1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727576AbfBTDEv (ORCPT ); Tue, 19 Feb 2019 22:04:51 -0500 Received: by mail-it1-f195.google.com with SMTP id i2so12073478ite.5 for ; Tue, 19 Feb 2019 19:04:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=eJugSu0c01vasCR6/EI9+EJaQMoshPdvgntBlpnSas0=; b=ZoqAQfFkvk20xxvLZpi2NvQkT12GMD9/oR9sPHzPR4QoPMvgFgy2i6ConoOw2SsEfN BlffFsWHIfNnEbQQKAq2wd4WCD0HeZjT1vLoki2wwgNdpV/LzwD7rtXRzwKrv+fL6SE8 6S2nTETb/JQorubnpSi+J6ComE/eYDslijf1K+HQMNWtvMiIJa+5OeH/Vn8c1xs39x99 y2RA15lbpXffh6A/+lbhLTHTrKvhLXK3gzujoQvHe0EL72fUGz0PQmgdn422yAXKmX4e 21rkSGwKO58k3MJc3pY+FZLoN+v8RxI5e3KvOdAT4wfB5bnWV2MnuBOKWAvePBGLEVTp n8nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=eJugSu0c01vasCR6/EI9+EJaQMoshPdvgntBlpnSas0=; b=NizCYOk9Vg6TrVgPv1fxSwVsykH/E7Syj0+rkUpmj96hnnlp1jmRaqhIZZuR6dKXqv 3CbvKf6Oz4vTzZ9RqHWPuJ0M+OrDlom+MRhk25g2BBv27J51SKJ2bH0Fqe9UqeAm/vNF MqYF6RtR+I/becQgGvL0WXkpP64O1b5RuNl9UpOvQLO3reqzkdTI7/59YSvTRNQVXe29 g/5zX+1GVVEOLFQ+QsiyWl7e8/0sjxjGG+fl579FWCX8V1JxaFgAoaus+tCpETXDNwCB rI4Lc4xOEZfEL3nNbU/oJY4czcZlXQlBkGWzz/lyLyGWoIxOIRWya7CFOoz03MTCU3HL urYQ== X-Gm-Message-State: AHQUAuYTMJYQMqJmjP9fSVvCBdNagYL70Wo2G8BJmU6OeBblXmW4ZUC7 ddWdqKWiuk6jVCDwyJgZ3xpIlXE= X-Google-Smtp-Source: AHgI3Iaa0Xx/AO4LLBASIgz7CCF3uZ1YoaUavH1mn23mmjxfSWaTLFWupKWedAcXiteY9fq7DU0EVw== X-Received: by 2002:a5d:9818:: with SMTP id a24mr9469312iol.85.1550631890191; Tue, 19 Feb 2019 19:04:50 -0800 (PST) Received: from localhost.localdomain (c-68-40-189-247.hsd1.mi.comcast.net. [68.40.189.247]) by smtp.gmail.com with ESMTPSA id a192sm2036924ita.0.2019.02.19.19.04.49 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 19:04:49 -0800 (PST) From: Trond Myklebust X-Google-Original-From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 1/4] SUNRPC: Convert xs_send_kvec() to use iov_iter_kvec() Date: Tue, 19 Feb 2019 22:03:38 -0500 Message-Id: <20190220030341.58766-2-trond.myklebust@hammerspace.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220030341.58766-1-trond.myklebust@hammerspace.com> References: <20190220030341.58766-1-trond.myklebust@hammerspace.com> 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 Prepare to the socket transmission code to use iov_iter. Signed-off-by: Trond Myklebust --- net/sunrpc/xprtsock.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 618e9c255a9f..f87412464cb2 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -726,21 +726,21 @@ xs_stream_reset_connect(struct sock_xprt *transport) #define XS_SENDMSG_FLAGS (MSG_DONTWAIT | MSG_NOSIGNAL) -static int xs_send_kvec(struct socket *sock, struct sockaddr *addr, int addrlen, struct kvec *vec, unsigned int base, int more) +static int xs_sendmsg(struct socket *sock, struct msghdr *msg, size_t seek) { - struct msghdr msg = { - .msg_name = addr, - .msg_namelen = addrlen, - .msg_flags = XS_SENDMSG_FLAGS | (more ? MSG_MORE : 0), - }; - struct kvec iov = { - .iov_base = vec->iov_base + base, - .iov_len = vec->iov_len - base, - }; + if (seek) + iov_iter_advance(&msg->msg_iter, seek); + return sock_sendmsg(sock, msg); +} - if (iov.iov_len != 0) - return kernel_sendmsg(sock, &msg, &iov, 1, iov.iov_len); - return kernel_sendmsg(sock, &msg, NULL, 0, 0); +static int xs_send_kvec(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t seek) +{ + if (!vec) { + iov_iter_kvec(&msg->msg_iter, WRITE, NULL, 0, 0); + return sock_sendmsg(sock, msg); + } + iov_iter_kvec(&msg->msg_iter, WRITE, vec, 1, vec->iov_len); + return xs_sendmsg(sock, msg, seek); } static int xs_send_pagedata(struct socket *sock, struct xdr_buf *xdr, unsigned int base, int more, bool zerocopy, int *sent_p) @@ -794,6 +794,11 @@ static int xs_send_pagedata(struct socket *sock, struct xdr_buf *xdr, unsigned i */ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, struct xdr_buf *xdr, unsigned int base, bool zerocopy, int *sent_p) { + struct msghdr msg = { + .msg_name = addr, + .msg_namelen = addrlen, + .msg_flags = XS_SENDMSG_FLAGS | MSG_MORE, + }; unsigned int remainder = xdr->len - base; int err = 0; int sent = 0; @@ -809,7 +814,9 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, if (base < xdr->head[0].iov_len || addr != NULL) { unsigned int len = xdr->head[0].iov_len - base; remainder -= len; - err = xs_send_kvec(sock, addr, addrlen, &xdr->head[0], base, remainder != 0); + if (remainder == 0) + msg.msg_flags &= ~MSG_MORE; + err = xs_send_kvec(sock, &msg, &xdr->head[0], base); if (remainder == 0 || err != len) goto out; *sent_p += err; @@ -830,7 +837,8 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, if (base >= xdr->tail[0].iov_len) return 0; - err = xs_send_kvec(sock, NULL, 0, &xdr->tail[0], base, 0); + msg.msg_flags &= ~MSG_MORE; + err = xs_send_kvec(sock, &msg, &xdr->tail[0], base); out: if (err > 0) { *sent_p += err; From patchwork Wed Feb 20 03:03:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 10821131 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 5017C13BF for ; Wed, 20 Feb 2019 03:04:54 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 38EC32C309 for ; Wed, 20 Feb 2019 03:04:54 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2D6F92C399; Wed, 20 Feb 2019 03:04:54 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 BD1AE2C309 for ; Wed, 20 Feb 2019 03:04:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730019AbfBTDEx (ORCPT ); Tue, 19 Feb 2019 22:04:53 -0500 Received: from mail-it1-f195.google.com ([209.85.166.195]:37096 "EHLO mail-it1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727576AbfBTDEw (ORCPT ); Tue, 19 Feb 2019 22:04:52 -0500 Received: by mail-it1-f195.google.com with SMTP id z124so12137527itc.2 for ; Tue, 19 Feb 2019 19:04:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=FbSCohCPQ0/eiIoUwuTP+BqehbVxjVD5mv4FZnaDxbM=; b=U6wjJY/uOO64dia3PbU/KYp1eTeBpjMrJ5yUeTQw5qK0l6UDBF1PL8/faKINgqo73u J/IGtRJkcUfcInOUGqjWkO1/Gz6B46PMLW32JBJFtGzjCPUI+EJlxdDaQqsF6NV8q2kK 1XPIazkQ6pkDuh15Oc8emSFHfTh+WEExR4ZfocV2UUe0C47xVOQvI9BNoh3PCl87dg3v g/3gubvQ48qBpFDr8Zj43+cwfRip9O6nKoDgH6wdRY8fzcwm76bw6kMiW1jMh29XFhw0 KIyip+MI9hhL9i4EuLubLL22E7k3a/FNnRd3LajcSjSKVmjdM4o6UN3EKmdr3a/qqRUN /LnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FbSCohCPQ0/eiIoUwuTP+BqehbVxjVD5mv4FZnaDxbM=; b=myUy+r3bW+Y0XIvLoBHqCmFZJePhigy6NIe2SpXFfyVPx0pKcItEZdqVVNikRxuzXj 0JrQk7GuJExksVO5kPaTJBLo9gLJm5zxbFP69Wt5zmDxNcC3lE6lgjWixiS0wrP+BGY3 BskmpK5lEMBgEJHmtYbqr4hq0l/tJ8vrZEZDRdsdYiKNIshC3QGeg70jzuNPaQxmpFSL YgwYhIp9nyHTgnLmxnhPAJtFYAJxJi2aW1+XmFu2Job+jyoxHPT8wwysRlajnf7b2YOi wjDc5aaSqMGqBy33csz60JYw9Bq6lUFxglHNAFu2MaGeRfzriKQQ2l3OWscjOjadK/P+ wOZw== X-Gm-Message-State: AHQUAuZ9109umyLRfkMdok8FqHlvF8svl+djglACNsEhEmdLOJ06grf6 qWa3EVuOIz5pCIcHDWXzbqcG4Pg= X-Google-Smtp-Source: AHgI3IYu6gbHfeuog3gJbzF8x7LGEg8xHkWl1iiYfBB0GO+CiFTPQvIViA0RpNchaMrfcapSrnrldQ== X-Received: by 2002:a02:1185:: with SMTP id 127mr9614078jaf.136.1550631891269; Tue, 19 Feb 2019 19:04:51 -0800 (PST) Received: from localhost.localdomain (c-68-40-189-247.hsd1.mi.comcast.net. [68.40.189.247]) by smtp.gmail.com with ESMTPSA id a192sm2036924ita.0.2019.02.19.19.04.50 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 19:04:50 -0800 (PST) From: Trond Myklebust X-Google-Original-From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 2/4] SUNRPC: Convert socket page send code to use iov_iter() Date: Tue, 19 Feb 2019 22:03:39 -0500 Message-Id: <20190220030341.58766-3-trond.myklebust@hammerspace.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220030341.58766-2-trond.myklebust@hammerspace.com> References: <20190220030341.58766-1-trond.myklebust@hammerspace.com> <20190220030341.58766-2-trond.myklebust@hammerspace.com> 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 Simplify the page send code using iov_iter and bvecs. Signed-off-by: Trond Myklebust --- net/sunrpc/xprt.c | 1 + net/sunrpc/xprtsock.c | 49 ++++++++++++------------------------------- 2 files changed, 14 insertions(+), 36 deletions(-) diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 1587728f40d1..2af6be9d6574 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c @@ -1723,6 +1723,7 @@ void xprt_release(struct rpc_task *task) xprt->ops->buf_free(task); xprt_inject_disconnect(xprt); xdr_free_bvec(&req->rq_rcv_buf); + xdr_free_bvec(&req->rq_snd_buf); if (req->rq_cred != NULL) put_rpccred(req->rq_cred); task->tk_rqstp = NULL; diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index f87412464cb2..d20b153ce19e 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -743,42 +743,18 @@ static int xs_send_kvec(struct socket *sock, struct msghdr *msg, struct kvec *ve return xs_sendmsg(sock, msg, seek); } -static int xs_send_pagedata(struct socket *sock, struct xdr_buf *xdr, unsigned int base, int more, bool zerocopy, int *sent_p) +static int xs_send_pagedata(struct socket *sock, struct msghdr *msg, struct xdr_buf *xdr, size_t base) { - ssize_t (*do_sendpage)(struct socket *sock, struct page *page, - int offset, size_t size, int flags); - struct page **ppage; - unsigned int remainder; int err; - remainder = xdr->page_len - base; - base += xdr->page_base; - ppage = xdr->pages + (base >> PAGE_SHIFT); - base &= ~PAGE_MASK; - do_sendpage = sock->ops->sendpage; - if (!zerocopy) - do_sendpage = sock_no_sendpage; - for(;;) { - unsigned int len = min_t(unsigned int, PAGE_SIZE - base, remainder); - int flags = XS_SENDMSG_FLAGS; + err = xdr_alloc_bvec(xdr, GFP_KERNEL); + if (err < 0) + return err; - remainder -= len; - if (more) - flags |= MSG_MORE; - if (remainder != 0) - flags |= MSG_SENDPAGE_NOTLAST | MSG_MORE; - err = do_sendpage(sock, *ppage, base, len, flags); - if (remainder == 0 || err != len) - break; - *sent_p += err; - ppage++; - base = 0; - } - if (err > 0) { - *sent_p += err; - err = 0; - } - return err; + iov_iter_bvec(&msg->msg_iter, WRITE, xdr->bvec, + xdr_buf_pagecount(xdr), + xdr->page_len + xdr->page_base); + return xs_sendmsg(sock, msg, base + xdr->page_base); } /** @@ -801,7 +777,6 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, }; unsigned int remainder = xdr->len - base; int err = 0; - int sent = 0; if (unlikely(!sock)) return -ENOTSOCK; @@ -827,10 +802,12 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, if (base < xdr->page_len) { unsigned int len = xdr->page_len - base; remainder -= len; - err = xs_send_pagedata(sock, xdr, base, remainder != 0, zerocopy, &sent); - *sent_p += sent; - if (remainder == 0 || sent != len) + if (remainder == 0) + msg.msg_flags &= ~MSG_MORE; + err = xs_send_pagedata(sock, &msg, xdr, base); + if (remainder == 0 || err != len) goto out; + *sent_p += err; base = 0; } else base -= xdr->page_len; From patchwork Wed Feb 20 03:03:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 10821133 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 90E9D13BF for ; Wed, 20 Feb 2019 03:04:55 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 799632C309 for ; Wed, 20 Feb 2019 03:04:55 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6DB562C399; Wed, 20 Feb 2019 03:04:55 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 179142C309 for ; Wed, 20 Feb 2019 03:04:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730392AbfBTDEy (ORCPT ); Tue, 19 Feb 2019 22:04:54 -0500 Received: from mail-it1-f193.google.com ([209.85.166.193]:53278 "EHLO mail-it1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727576AbfBTDEy (ORCPT ); Tue, 19 Feb 2019 22:04:54 -0500 Received: by mail-it1-f193.google.com with SMTP id x131so11868134itc.3 for ; Tue, 19 Feb 2019 19:04:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=/8uHzbksAoYNOq2+elgDOAfMP1O7vHJwznRO3Zz4dBE=; b=cjjx0SpAU6b9V7+CeF2tYWAltC+ogwz3hFXqVsvTVQ1sRiyZUzNfLMKi/lh05W74as 6SaaNkuWRAbxfGjXVFB2fN4f1RUSF01dn7C46hUxz6vv1weR06fE0PYb4bHhvz0gxz84 DvL3sFrONRrbA+gb0Zvl2tE9fLt8HNBl29hY/FqRemjWVNBr15Y0sfnHGdpXif9+quVt F7BqlQEvq8J380mN/crl1+QQWFR1J5N/fv9Ueqfd3JZPD8P5MlhIjEBhIhKmCtobiEVN 0ElohFm73xP/LWIQMbyXKHZgWRm2agwl8Baer8ppzhwC9CeEPkxhLTZfdOmRPPou525u H2ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/8uHzbksAoYNOq2+elgDOAfMP1O7vHJwznRO3Zz4dBE=; b=KA1iOj5L8L9oh8H5SM/pcawAerJOdsAErVv/RjiuaVQHcnH9JElgXDe7PZ2kmT4vHS n1qYtTPX89opVRsdwlsFoVzroNlRDJ9BtdJC1D7BfURY/3yqz+XwUq6Lbi6xFI+HZLDR +keDFXBUhsGEeDtEMvU0bsZs6HhBGK7JGRB24P9pzCO40KBgjjurWM9+AGQCHE2oGrr3 m9ucuYSCYNaE/6R245CWrFo4wh/0sIueIyzxrj9iRUDI3FBkEGzQ0+A1Ihlv1S2zBNmf K8zHlXjBFzCQCaRY1NM+xvdKFDU39UOw8thTZGsW0v0OPU2r875smlmOS5IAUPHk+YJ7 DgvQ== X-Gm-Message-State: AHQUAuayHFXDRMtVOL5xTYhUzdIrLuRYaTqKsLHi6Eo9qP5CE+AlnzE1 cmRpXPUEW/Ge7BVtjG8NXLs5UWw= X-Google-Smtp-Source: AHgI3IYKijrPADFEEuOHAi2oU696d9fluXZ7772HM74kvXZgqJKSSaVWvU493wVqYQXVGk9s7IoFzA== X-Received: by 2002:a6b:8d13:: with SMTP id p19mr2690446iod.18.1550631892490; Tue, 19 Feb 2019 19:04:52 -0800 (PST) Received: from localhost.localdomain (c-68-40-189-247.hsd1.mi.comcast.net. [68.40.189.247]) by smtp.gmail.com with ESMTPSA id a192sm2036924ita.0.2019.02.19.19.04.51 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 19:04:51 -0800 (PST) From: Trond Myklebust X-Google-Original-From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 3/4] SUNRPC: Further cleanups of xs_sendpages() Date: Tue, 19 Feb 2019 22:03:40 -0500 Message-Id: <20190220030341.58766-4-trond.myklebust@hammerspace.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220030341.58766-3-trond.myklebust@hammerspace.com> References: <20190220030341.58766-1-trond.myklebust@hammerspace.com> <20190220030341.58766-2-trond.myklebust@hammerspace.com> <20190220030341.58766-3-trond.myklebust@hammerspace.com> 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 Now that we send the pages using a struct msghdr, instead of using sendpage(), we no longer need to 'prime the socket' with an address for unconnected UDP messages. Signed-off-by: Trond Myklebust --- net/sunrpc/xprtsock.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index d20b153ce19e..73586114b825 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -735,10 +735,6 @@ static int xs_sendmsg(struct socket *sock, struct msghdr *msg, size_t seek) static int xs_send_kvec(struct socket *sock, struct msghdr *msg, struct kvec *vec, size_t seek) { - if (!vec) { - iov_iter_kvec(&msg->msg_iter, WRITE, NULL, 0, 0); - return sock_sendmsg(sock, msg); - } iov_iter_kvec(&msg->msg_iter, WRITE, vec, 1, vec->iov_len); return xs_sendmsg(sock, msg, seek); } @@ -781,12 +777,7 @@ static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, if (unlikely(!sock)) return -ENOTSOCK; - if (base != 0) { - addr = NULL; - addrlen = 0; - } - - if (base < xdr->head[0].iov_len || addr != NULL) { + if (base < xdr->head[0].iov_len) { unsigned int len = xdr->head[0].iov_len - base; remainder -= len; if (remainder == 0) From patchwork Wed Feb 20 03:03:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Trond Myklebust X-Patchwork-Id: 10821135 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8278F922 for ; Wed, 20 Feb 2019 03:04:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B0652C309 for ; Wed, 20 Feb 2019 03:04:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5C6D02C399; Wed, 20 Feb 2019 03:04:56 +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=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI 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 EF0552C309 for ; Wed, 20 Feb 2019 03:04:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727576AbfBTDEz (ORCPT ); Tue, 19 Feb 2019 22:04:55 -0500 Received: from mail-it1-f196.google.com ([209.85.166.196]:53284 "EHLO mail-it1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730294AbfBTDEy (ORCPT ); Tue, 19 Feb 2019 22:04:54 -0500 Received: by mail-it1-f196.google.com with SMTP id x131so11868208itc.3 for ; Tue, 19 Feb 2019 19:04:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=Yy9Xb49TwkFxziiRu/R/ocobF/tPtbPtQyavRZ/j5ek=; b=LfGP6j62phosiI7istMqYOZSVgwzyFUY9WH418wxwHXpNC/aRFTwS6R16VtbHcyync 2RMfGlmtPEMOPreiFad+tCwR05HmMvjjXDWm6e84wc7cSyG4knnNhy2IyPEscGB3cltZ 5u3b+sknBLmJ/6Y8ubiqjJsHaKAkYSmfd/Oulk7SI3LZbpc+4XIPNBTs0x4tWBbh2T/C I60kotKxHtDVzLoDSQ2qQExAKtG+5FNaeIkTpP3EBB/PVeMj6l8MIIszY1l5y3e17bFU EiQIpPWDVHb1jwWLg+fTwlS60ozGymPN8pd7fKdmNU+gZKS77hytIySRUCzho2oxkK7S BnTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Yy9Xb49TwkFxziiRu/R/ocobF/tPtbPtQyavRZ/j5ek=; b=XM/awiqGIMMyOBA8f/eER1WpLiyPBsbYhd1I/lLpIXLVsbannpvKi1SDRL81LmV/eo 4tCWI5MrL42zvAcEG7wzo+GNe8Tzc/fhvi9p0ZCd2ULbt/AY4SRSNl17m3YjV9WG1ytR x2U/Rq2hplsQQ9GuVM9RX8k+iftgr1W9vaxZsIxtgRDRW+nRfxQ/1h9qVxQjBkLSvnxJ 9xxHH+5SKXmk/aK6xYKWP/dP7F/6VbMRfQOiwAALOOuZYd3CGYF+1sBmjLjCY2DsYGDC M4M92EGiLbhWfFyY+EknumkmFFzxofmst3jajV5iQy0OBfOzZi0GmSRnFj8qpBJJe1Kk WysQ== X-Gm-Message-State: AHQUAubGpwZPffNx0iXDNLrqp9rWFfgFccjP+Uh1ZSGiO5M7bWyL1fa6 ZYrKdXsVaCrvBWPpcek86Gem25I= X-Google-Smtp-Source: AHgI3IYKMqfS0iw4CpAske1kmugHaFysYErqDwLXkVA9wXZqoEzZBaEd6s7aysS6XT+pf1VRPX7bsg== X-Received: by 2002:a24:415a:: with SMTP id x87mr1111388ita.93.1550631893555; Tue, 19 Feb 2019 19:04:53 -0800 (PST) Received: from localhost.localdomain (c-68-40-189-247.hsd1.mi.comcast.net. [68.40.189.247]) by smtp.gmail.com with ESMTPSA id a192sm2036924ita.0.2019.02.19.19.04.52 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 19 Feb 2019 19:04:53 -0800 (PST) From: Trond Myklebust X-Google-Original-From: Trond Myklebust To: linux-nfs@vger.kernel.org Subject: [PATCH 4/4] SUNRPC: Remove the redundant 'zerocopy' argument to xs_sendpages() Date: Tue, 19 Feb 2019 22:03:41 -0500 Message-Id: <20190220030341.58766-5-trond.myklebust@hammerspace.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190220030341.58766-4-trond.myklebust@hammerspace.com> References: <20190220030341.58766-1-trond.myklebust@hammerspace.com> <20190220030341.58766-2-trond.myklebust@hammerspace.com> <20190220030341.58766-3-trond.myklebust@hammerspace.com> <20190220030341.58766-4-trond.myklebust@hammerspace.com> 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 Signed-off-by: Trond Myklebust --- net/sunrpc/xprtsock.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 73586114b825..9fe74d79cdc7 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c @@ -760,11 +760,10 @@ static int xs_send_pagedata(struct socket *sock, struct msghdr *msg, struct xdr_ * @addrlen: UDP only -- length of destination address * @xdr: buffer containing this request * @base: starting position in the buffer - * @zerocopy: true if it is safe to use sendpage() * @sent_p: return the total number of bytes successfully queued for sending * */ -static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, struct xdr_buf *xdr, unsigned int base, bool zerocopy, int *sent_p) +static int xs_sendpages(struct socket *sock, struct sockaddr *addr, int addrlen, struct xdr_buf *xdr, unsigned int base, int *sent_p) { struct msghdr msg = { .msg_name = addr, @@ -919,7 +918,7 @@ static int xs_local_send_request(struct rpc_rqst *req) req->rq_xtime = ktime_get(); status = xs_sendpages(transport->sock, NULL, 0, xdr, transport->xmit.offset, - true, &sent); + &sent); dprintk("RPC: %s(%u) = %d\n", __func__, xdr->len - transport->xmit.offset, status); @@ -986,7 +985,7 @@ static int xs_udp_send_request(struct rpc_rqst *req) req->rq_xtime = ktime_get(); status = xs_sendpages(transport->sock, xs_addr(xprt), xprt->addrlen, - xdr, 0, true, &sent); + xdr, 0, &sent); dprintk("RPC: xs_udp_send_request(%u) = %d\n", xdr->len, status); @@ -1050,7 +1049,6 @@ static int xs_tcp_send_request(struct rpc_rqst *req) struct rpc_xprt *xprt = req->rq_xprt; struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); struct xdr_buf *xdr = &req->rq_snd_buf; - bool zerocopy = true; bool vm_wait = false; int status; int sent; @@ -1067,12 +1065,6 @@ static int xs_tcp_send_request(struct rpc_rqst *req) xs_pktdump("packet data:", req->rq_svec->iov_base, req->rq_svec->iov_len); - /* Don't use zero copy if this is a resend. If the RPC call - * completes while the socket holds a reference to the pages, - * then we may end up resending corrupted data. - */ - if (req->rq_task->tk_flags & RPC_TASK_SENT) - zerocopy = false; if (test_bit(XPRT_SOCK_UPD_TIMEOUT, &transport->sock_state)) xs_tcp_set_socket_timeouts(xprt, transport->sock); @@ -1085,7 +1077,7 @@ static int xs_tcp_send_request(struct rpc_rqst *req) sent = 0; status = xs_sendpages(transport->sock, NULL, 0, xdr, transport->xmit.offset, - zerocopy, &sent); + &sent); dprintk("RPC: xs_tcp_send_request(%u) = %d\n", xdr->len - transport->xmit.offset, status);