Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp1312413rwl; Fri, 31 Mar 2023 09:21:36 -0700 (PDT) X-Google-Smtp-Source: AKy350aAEbDrNWce+PX2SkkFW2mRq+XEhi4A5PNokTPGru5Qg7BU0hva4vC3UdyIdRtCtjtCMYWw X-Received: by 2002:a17:906:74c6:b0:8f0:ba09:4abe with SMTP id z6-20020a17090674c600b008f0ba094abemr5670039ejl.2.1680279696440; Fri, 31 Mar 2023 09:21:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680279696; cv=none; d=google.com; s=arc-20160816; b=KQsC7ZgPWe+838zhcMmMd0/7dzkcqBHVQyz2MlrjmqBKrQUiw22cviwgeWmNrrY21g Vy8hq9d2X7wvJaXl3ls+Rcu0fJo+0YpfbEVXQntECK7Dpy8PM+KAJqw3swF/Vnn9XIv3 3mZDYQo8gAc53TGBjKaP8jYKhasMDLbXnX7JqZVcqW4dSZzNq3BEwZtBpVTKZPfRSVxN 6hhmmE6O2Q3c1EJe/ZfW/9XIKTwsR1gx5SLm3UTNteZOPdPBfaB1gYVcx68QNRcFDo/X fcpgETxrsjOXZGBG7wHHQfHEw/RrntQzM+HkDhi3CbehrU6f5jw+TB8vHgw6br5KykNY zcYg== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=V7IwXZpp4caT5icSmRzfTKcX2kIg430bJYtEqUuaqXc=; b=I8AhtmmjlEHSkfvPrqWZWroMLpwPaVGog51rZwIsX5yL+/fu3B5wSjSaO53Rn/68al UGw9J1ydNrO0JvXAy6w3aFLm8hCbQUAZTbK9oVqJe+O3W50JyK1rXVNRp7si3tyjmUH+ wGNQEX2FS4ooB5eFJNNQ2OULU0Jho6yfh0JOPsk93vFjCVWkXuyYvz8diJRdOBzViEGB zw7+o9ylUdVqV+d2sBAu2RDEPjxNarqRkadxJtTMIl1LkprL2Ti+saawQaxzTGueK/P1 k95DwQkAqYSEU/pxkbm2DxWjpKbogT4I3OdrVDajFrGK/4i32WN9mXKzD82/qNPlHinG LOCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=TGf1+sUT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g12-20020a170906348c00b00933b668c967si2383422ejb.477.2023.03.31.09.21.11; Fri, 31 Mar 2023 09:21:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=TGf1+sUT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233552AbjCaQTf (ORCPT + 99 others); Fri, 31 Mar 2023 12:19:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44260 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233495AbjCaQSW (ORCPT ); Fri, 31 Mar 2023 12:18:22 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9BD98D4FA6 for ; Fri, 31 Mar 2023 09:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680279103; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V7IwXZpp4caT5icSmRzfTKcX2kIg430bJYtEqUuaqXc=; b=TGf1+sUTpzZ1q2YPwYW1QjbEoAU6RtF3MnAwdeFcWhNliuv8nBjwMVjnJenSRKqJpDxKfl 9gyUPyq1KmCKvfScplb5l4pgUt/0gEAHEuXJ5axZVgHhClzomzK4kKplezQvl2Ed8vQYCp 5d1fDhT87kGmopQ+ryHLE5nf3bfqHDk= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-499-KUirUmF0P5GTXUc33yxBYQ-1; Fri, 31 Mar 2023 12:11:41 -0400 X-MC-Unique: KUirUmF0P5GTXUc33yxBYQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 2135D10119EB; Fri, 31 Mar 2023 16:11:40 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.33.36.18]) by smtp.corp.redhat.com (Postfix) with ESMTP id 120582166B33; Fri, 31 Mar 2023 16:11:37 +0000 (UTC) From: David Howells To: Matthew Wilcox , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: David Howells , Al Viro , Christoph Hellwig , Jens Axboe , Jeff Layton , Christian Brauner , Chuck Lever III , Linus Torvalds , netdev@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Tom Herbert , Tom Herbert Subject: [PATCH v3 50/55] kcm: Use sendmsg(MSG_SPLICE_PAGES) rather then sendpage Date: Fri, 31 Mar 2023 17:09:09 +0100 Message-Id: <20230331160914.1608208-51-dhowells@redhat.com> In-Reply-To: <20230331160914.1608208-1-dhowells@redhat.com> References: <20230331160914.1608208-1-dhowells@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When transmitting data, call down into TCP using a single sendmsg with MSG_SPLICE_PAGES to indicate that content should be spliced rather than performing several sendmsg and sendpage calls to transmit header, data pages and trailer. Signed-off-by: David Howells cc: Tom Herbert cc: Tom Herbert cc: "David S. Miller" cc: Eric Dumazet cc: Jakub Kicinski cc: Paolo Abeni cc: Jens Axboe cc: Matthew Wilcox cc: netdev@vger.kernel.org --- net/kcm/kcmsock.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/net/kcm/kcmsock.c b/net/kcm/kcmsock.c index d77d28fbf389..9c9d379aafb1 100644 --- a/net/kcm/kcmsock.c +++ b/net/kcm/kcmsock.c @@ -641,6 +641,10 @@ static int kcm_write_msgs(struct kcm_sock *kcm) for (fragidx = 0; fragidx < skb_shinfo(skb)->nr_frags; fragidx++) { + struct bio_vec bvec; + struct msghdr msg = { + .msg_flags = MSG_DONTWAIT | MSG_SPLICE_PAGES, + }; skb_frag_t *frag; frag_offset = 0; @@ -651,11 +655,12 @@ static int kcm_write_msgs(struct kcm_sock *kcm) goto out; } - ret = kernel_sendpage(psock->sk->sk_socket, - skb_frag_page(frag), - skb_frag_off(frag) + frag_offset, - skb_frag_size(frag) - frag_offset, - MSG_DONTWAIT); + bvec_set_page(&bvec, + skb_frag_page(frag), + skb_frag_size(frag) - frag_offset, + skb_frag_off(frag) + frag_offset); + iov_iter_bvec(&msg.msg_iter, ITER_SOURCE, &bvec, 1, bvec.bv_len); + ret = sock_sendmsg(psock->sk->sk_socket, &msg); if (ret <= 0) { if (ret == -EAGAIN) { /* Save state to try again when there's