From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2036BC001DC for ; Wed, 19 Jul 2023 21:04:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 677D3280090; Wed, 19 Jul 2023 17:04:22 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 627E528004C; Wed, 19 Jul 2023 17:04:22 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4EF4C280090; Wed, 19 Jul 2023 17:04:22 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 4035428004C for ; Wed, 19 Jul 2023 17:04:22 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 026D516046A for ; Wed, 19 Jul 2023 21:04:21 +0000 (UTC) X-FDA: 81029589564.26.ED06C8D Received: from resqmta-h1p-028594.sys.comcast.net (resqmta-h1p-028594.sys.comcast.net [96.102.200.2]) by imf13.hostedemail.com (Postfix) with ESMTP id 154F620011 for ; Wed, 19 Jul 2023 21:04:19 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=comcastmailservice.net header.s=20211018a header.b=sIwtoD2B; dmarc=none; spf=pass (imf13.hostedemail.com: domain of kernel@mattwhitlock.name designates 96.102.200.2 as permitted sender) smtp.mailfrom=kernel@mattwhitlock.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1689800660; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=xqMj+3VVjo+8UbUEghVnxRyNG8G2SG/j/lJTsRoSPsQ=; b=fZTZJIpb/jOvcVxTyJjdhEPXIMlEhM9YeC6B6cRR0ijdRef2CokOIdosQWnDHW81JaIe8s qd0WQpMzm57JSyowy4bTr3kuABdn7snlCsaGSxpxNGSbJEtH8D3Cjabzf7pBE7j0OpILhS PApJwZ3jcNJSM3qWNoZai7tgQ0ptTC0= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=comcastmailservice.net header.s=20211018a header.b=sIwtoD2B; dmarc=none; spf=pass (imf13.hostedemail.com: domain of kernel@mattwhitlock.name designates 96.102.200.2 as permitted sender) smtp.mailfrom=kernel@mattwhitlock.name ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1689800660; a=rsa-sha256; cv=none; b=S4VMpiomwbkLB9r6/Nc7I66iY17y9LawJa93iKvaM7CVv8sN4wm1O1NxiL3twkDwFMcLp+ jx4iM2HZRCKzWWsaRdlS7cKvUc7sfhFitr5eESEGrckkLrk2RRGKlrnSyqCYaR/cMfg17X /Rp/dIdfrmNMv6mCs/Pn8+/E0H5FCtc= Received: from resomta-h1p-027914.sys.comcast.net ([96.102.179.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 256/256 bits) (Client did not present a certificate) by resqmta-h1p-028594.sys.comcast.net with ESMTP id M5eyqw0e7tOBwMEJNqZHp0; Wed, 19 Jul 2023 21:02:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcastmailservice.net; s=20211018a; t=1689800537; bh=xqMj+3VVjo+8UbUEghVnxRyNG8G2SG/j/lJTsRoSPsQ=; h=Received:Received:From:To:Subject:Date:MIME-Version:Message-ID: Content-Type:Xfinity-Spam-Result; b=sIwtoD2BFxw6coZt30KD5r92rEjnNn3CnWIaj9jdPN02I8ddbo+0z39eVUZLizQw6 +mA4ormepukZ1ppsz7O5aTlxzwhXYXdhQC7yvKRbUOZr/7iYaTegYRREFo5nLFAubw V4wjrmxXDAMBSS4mpBE9ZbPz1HLgC99bGWBHt/hBQwiF4U1PtyudGlzRb7a0Ll2Na5 ndA8UBH3DM6hgafwEYMHx0AzlX+XKOK/YQHekv+20LeEoj9ZHYDsYifKdhrktChKnI HDHsTpET93teR76UW+NYuqEiyBrga2kd5iZuPlzG5s2C6Z0FiR0cIOxBPgmm4a+6Rx HQLM5VJWGJmWQ== Received: from localhost ([IPv6:2601:18c:9082:afd:219:d1ff:fe75:dc2f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 256/256 bits) (Client did not present a certificate) by resomta-h1p-027914.sys.comcast.net with ESMTPSA id MEJAqBpSU0WpqMEJCqnizK; Wed, 19 Jul 2023 21:02:12 +0000 X-Xfinity-VMeta: sc=-100.00;st=legit From: Matt Whitlock To: Linus Torvalds Cc: Matthew Wilcox , Miklos Szeredi , David Howells , , Dave Chinner , Jens Axboe , , , , Christoph Hellwig , Subject: Re: [RFC PATCH 1/4] splice: Fix corruption of spliced data after =?iso-8859-1?Q?splice()_returns?= Date: Wed, 19 Jul 2023 17:02:04 -0400 MIME-Version: 1.0 Message-ID: <6609f1b8-3264-4017-ac3c-84a01ea12690@mattwhitlock.name> In-Reply-To: References: <20230629155433.4170837-1-dhowells@redhat.com> <20230629155433.4170837-2-dhowells@redhat.com> User-Agent: Trojita/v0.7-595-g7738cd47; Qt/5.15.10; xcb; Linux; Gentoo Linux Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 154F620011 X-Stat-Signature: sz9hmi59of8wnfd997db7gid7ywyedns X-HE-Tag: 1689800659-833301 X-HE-Meta: U2FsdGVkX1/uhCs8/uRJPlFLN1cBrZMRrr5rWO+imNnrZ6GAkeRL4oh/EK+NkE2Si52eI2TyMy4+n4Z9ZSN8V1j0cDwuZu76nBZ5Dz2q199G/uvDP3aTfIyqJDebVs0N3WJCm+JEWD4yQhMgKGBqJdDsBRKBxZPjOveDtnZ9KX9+Bc6Q2hJvFzdV5UbAx70ZZKGhPWmJIJ3Ytgyk9m6T7f3H9bRXSEGXoxmUihA4hcQn8n+j5szCKRfspb1ydfegjnDu2LHD9ulMoHqKzj75MQxCxNZatTeMLu38qDJ1UBcdS60a7RIiJeuBxpx1xmtI8z050Rn1k15bU+qx3oq3PUn5MvTtFpYKusxKtCwq9AGbMw8+pWT79rD3ezFuBbXFaDR4jGexX7ypgx1vZUqvaJPyMwlBreCbUxjNYsNsF68CChKlIQuQDjC6Ka1VX02veme0saju4wBT78xmILOM15D4PKiqC4rH4LUFAZ/TYjG9BBSwt7nebFWP/gxwqO1ZxsUWqqZDW5hif+ips5TrE+IXA0Jje1lPb9Akchzupq6fW8h2c0E+t5Wha8WQFFx2jzBSV77lvnFNEuEKyuuFC92RwTTBqxiRVdpJ2ojNsfdsk1Yl8Huix6++xiw/XSuxwV3EG/7PfBpx3yXrrtgGD59OvBz+Z4P9UG62n+klkRY/3MzArmqxv3mllUBArUzVnnaAvgiW89UnEhG6Ve0GHSb3C81kO+bDtQqrIBd/XYkddR94PpX01lqjlEfZ0CkjY4Tj/hSy/jVkTUQLv0W5DtpSnj496mN6VYBhkPh2N1K3zqV22DXlmANveEasZOm/Nu/vi+LffIYTUqvW21Euerqb+1T92sSP17OoqxOkOoScnEoWC9aot5geAAZq1QYVhVtUEGC+M4WRRNICkNHu1im04/tehnnIgy5klW185X4pyVzmcxWLGXvnyzg3g/diBrmEcoEymcenJ+pv2sf 5ghwRWFr hovK461cAohOsRJe5J0xzxRBnn/bkpzShEabg3HPmNx/yacxBwPYm0GtU0QTiZ7RSF1Evts4GduqQ0KxhwJRg1xUn3ancAIQ1yObL9pxsw7NxipodNeiSJF0I5nPeByQeZ7UUOFQIMD78a6EZX2MJX+XAxhF78jEsGZQUrSSJejYD8wbVrSEbhrPgFqvZFzw8SRrjWCALEAdCdjsTpXfU6UrlWEXPbLt6Ya89iA9WLRS2cjLZsn1UhbAY8ZR9ALiBLP3IRql07gnAnBTUO1b/s3kgWdMCMXgRhT7Jmjy4fcVfzKKqGjJ5qmYvFQKU3BOza66+IMCoURKPhJQMsI0aOuhxfgcV+r99t+8h9aqQCsGp2hY3xObKJlbLBAqOuS4eSyWpIk0/MiFDi8N+9taieU/3jQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wednesday, 19 July 2023 16:16:07 EDT, Linus Torvalds wrote: > The *ONLY* reason for splice() existing is for zero-copy. The very first sentence of splice(2) reads: "splice() moves data between=20 two file descriptors without copying between kernel address space and user=20= address space." Thus, it is not unreasonable to believe that the point of=20 splice is to avoid copying between user-space and kernel-space. If you use read() and write(), then you're making two copies. If you use=20 splice(), then you're making one copy (or zero, but that's an optimization=20= that should be invisible to the user). > And no, we don't start some kind of crazy "versioned zero-copy with > COW". That's a fundamental mistake. Agreed. splice() should steal the reference if it can, copy the page data=20 if it must. Note that, even in the slow case where the page data must be=20 copied, this still gives a better-than-50% speedup over read()+write()=20 since an entire copy (and one syscall) is elided. > IF YOU DON'T UNDERSTAND THE *POINT* OF SPLICE, DON'T USE SPLICE. Thanks for being so condescending. Your reputation is deserved.