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 AAE79C64EC4 for ; Wed, 8 Mar 2023 22:39:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 237CC6B0071; Wed, 8 Mar 2023 17:39:25 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1E7F76B0072; Wed, 8 Mar 2023 17:39:25 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B036280001; Wed, 8 Mar 2023 17:39:25 -0500 (EST) 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 EFBE06B0071 for ; Wed, 8 Mar 2023 17:39:24 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id AC62BAB7B6 for ; Wed, 8 Mar 2023 22:39:24 +0000 (UTC) X-FDA: 80547198648.27.B8BFDD7 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf13.hostedemail.com (Postfix) with ESMTP id A7CD22000B for ; Wed, 8 Mar 2023 22:39:21 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=XQXaw6Sv; spf=pass (imf13.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.48 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1678315161; 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=RgHOh6/Mv9MfzuVql9i7aCQo+w921G9eVyn2ZtvpMeA=; b=KLLdUjdZcioFeftz2yMcc1v8Jc00/uktUEEQ7loHhvy13Cb18nMYJkm+le1VxghVPsnTZf 1QT4wTV9FhGALzIZVZHzaWtuMLgWTA8kBygSGGYWMnv6wsXR3FlEh2vJC8m8B6S/6mQEb5 A+II2P+K9jeXwUjfrWdC4wJCoCOzAAo= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=XQXaw6Sv; spf=pass (imf13.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.48 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678315161; a=rsa-sha256; cv=none; b=tnJiG6GuUl5R15liHobt94GdUj/POVhXABpJtRfpVi3LaNO2ak7lHuwBYMbG5n2cQtFIH7 O8YgTbfouMbLmDMyRZ/MDwWcCa9LrZ+d4LebqGVF2uCFR3GCkuCsZ1PlETkkDB1CI9/Ndq QrjxMBwFalkOVS4USS+H4GmSlkjtWGE= Received: by mail-ed1-f48.google.com with SMTP id j11so52335449edq.4 for ; Wed, 08 Mar 2023 14:39:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1678315159; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=RgHOh6/Mv9MfzuVql9i7aCQo+w921G9eVyn2ZtvpMeA=; b=XQXaw6SveWahy2vB5VNPk9scfWmxZaNlQgREb/CuY/yZUytGHjqPn864hIBUArPFn1 y7zz67wMDKFhJFysg8iELT8s+Eqzks3zF0isZaefpIONj9oeZlPfqnQUX6N/ae7XMtK6 s4tbuPIabvLC4k3jI13hdl3b4BXHTK/yn6DKM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678315159; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RgHOh6/Mv9MfzuVql9i7aCQo+w921G9eVyn2ZtvpMeA=; b=mV1VMaxo1PVjHVdfhhx2dhfvsmMs/HXoFRsfiqlZXWhXKXFzfWdvdZ1FgFaWFJH0cN x7DCJyO9ycpouvbKKDnXRXknZA8peIshlarYscM3Ui48hKhD3n9x6srKMaDSOXmftzoX Gcsj43hO7jlKKWrDoREfaLzDGf5aFiOjpf087iyFMP9ZZIyLIPBGQqddCEV8xzfc2DHM SiHH4AsSRu8RHo3Iddfeul/PZzbistEzje24H/mB6nKLD94Aw0+vu1uDMnyEZyFosh4P kSLn2EM9V3HSVLhHljwxV246g5oB8hhFPEt4oj0su6fgWVPC5EVy9pzfywoIgK7IEhbf yvSQ== X-Gm-Message-State: AO0yUKVzRmirY1C4c2xUR9qqe0FeNa2/mc3ImldDngY1ozdEKHWhD5F8 pgYTUW+3A8wu+YKB4CVyCx5EyNQUvOOwrPflORQB/w== X-Google-Smtp-Source: AK7set9+NMNsY6JpvKrs9RPjCFFXL352psEFfkcyDxqkaFgT58sZ1ZDf+XWJiGbhEi2NslsGbK+/0Q== X-Received: by 2002:a17:907:1051:b0:8b1:c5aa:4c8b with SMTP id oy17-20020a170907105100b008b1c5aa4c8bmr18180240ejb.77.1678315159475; Wed, 08 Mar 2023 14:39:19 -0800 (PST) Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com. [209.85.208.47]) by smtp.gmail.com with ESMTPSA id r16-20020a170906a21000b008cafeec917dsm8007414ejy.101.2023.03.08.14.39.18 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 08 Mar 2023 14:39:18 -0800 (PST) Received: by mail-ed1-f47.google.com with SMTP id ec29so41030038edb.6 for ; Wed, 08 Mar 2023 14:39:18 -0800 (PST) X-Received: by 2002:a50:8750:0:b0:4c2:ed2:1196 with SMTP id 16-20020a508750000000b004c20ed21196mr10973452edv.5.1678315158081; Wed, 08 Mar 2023 14:39:18 -0800 (PST) MIME-Version: 1.0 References: <20230308165251.2078898-1-dhowells@redhat.com> <20230308165251.2078898-4-dhowells@redhat.com> In-Reply-To: <20230308165251.2078898-4-dhowells@redhat.com> From: Linus Torvalds Date: Wed, 8 Mar 2023 14:39:00 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v17 03/14] shmem: Implement splice-read To: David Howells Cc: Jens Axboe , Al Viro , Christoph Hellwig , Matthew Wilcox , Jan Kara , Jeff Layton , David Hildenbrand , Jason Gunthorpe , Logan Gunthorpe , Hillf Danton , linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Daniel Golle , Guenter Roeck , Christoph Hellwig , John Hubbard , Hugh Dickins Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 71u9ti3zqnh3ewzyr86zpg47dxhhxaz4 X-Rspam-User: X-Rspamd-Queue-Id: A7CD22000B X-Rspamd-Server: rspam06 X-HE-Tag: 1678315161-604924 X-HE-Meta: U2FsdGVkX18nRlmDLkYRz+SjKEDaWA/+6t1uhf2lEgttt7q2/7McSIsPms8h7KEsY7VcYBKnzgkyPZrdl/xT9N8NtlZiHiFxTtDp1I98P8CuqRvvg75dh220dnAJnjNAq8p06iEclMGcunQdkggtk+HRA1CDdC2Cg4VrNXv0H/NFVbnLSeqZ9+8QifX9P8eKDtHfd5R0Hp0Aguh8CZjWdcSMJhMa70IQlKAoBknoZy9sls3tL+FgI2ziqjgXlMxZ7lEHoAWOh128b/luiaPbJ3w2TIDUu7eUL/f6tmJ6dDxGczF4DmJX7Wn4FoHbfmYcD5C4bD8znELQoHLb8l5SnPzRwaOHpvWuJMiEZTMAGvBjRfyJxnbwSQSS2dFYYFZYCP9+jy3WyggHUFbjkj/6Pn3wj9O5fLlyXEH/E0FGrnF45Mt3ojkTHd3ig6CH1rgVsljr2Bk2W1M+XtQXKbjdWz7mOHC6eHa8LaAIF/iKWtYtJSoEjGuJQC2x4iTTs5Ah1O3tjbyTwZ5DkpylhJWnfdgTkUS2zwATm41XeQ/J2Y8X2s7Y7L8mi2DQdCgAsuDM2xb2H9xP8KUOeCBpFhtFiJ1pMZey4v3cEKEJYYoalFACyhLxNwvO5XRpBBO7roDhda07NWowpPzOoichBIY4o9qXWoiFdvC/5JXV+krG6weqmElGMO93NMSCVyMo20VMpBlWHOLZrUPFVA6yTpQPhIwR5R83AVKJ03kzsqYoa4tPnQfH1jM2apVpEaSEw5URVdq62b98hHWl4Sin+Epr2xgpQa9FjuG6g8AIkmH0L36FYvg9AiNU5o/nctPxWNQcy/JwdTQnb4HzT1cOLITmrZk/nEb4ZDrCluX8CJJJmG+x81A2eU3XD++mZiBXH2gFiNIkLgr3t5ebZu1cd9QTtdXqtDoP0Rj+6WF4nW4Z4mG9HdNOcwN9gKxadAWa91d+O12Gtej9q4+Pfxk+JC1 eADZJniq z8UG6/yHxpnZiGx6cg8I0OmfhuQ2vqy7F8j7rgM3xgPCllbvmFqyzfkJomux+4f/+N3d1fgoMX0ptyyVR5KoGjdXeBdaOZMT3leBQtjeiKPVRKZWQeGZy7g5UuZ6SnC8mXuXcdKbW/eiDOMxXew/ucfyuO8byMeF+apEkmrWKZW+UI1KO0F9ptQF/AHt2mHpZPMnhu6Nj4VHH3W0F4cm9FrmfhkeiBNztA5z4cNtVw+WoxXWceJRmCRvLPRHAfZBQqbZ+dCeac3upUg0BtMpMRWuS5CDg7AVGAQXWP2Vc8aYOMrmLy3g6tYK9SxXwLhKx6PHLwO8PIZrhsB/Ev574Lg8be9g5L/1jCtF+utThz5gusir2p45D8f/mY3odLJqi/t9hq4Ui0/ZCfr+dmTXZnHbER228jo328YuWRRazozQENWZ4ePHouvTe6sOr59L7Lv4rfjVRfkmvHc46Ic/+sSdAzNuTzbOLNydubOnVem638Hx1MXeOmdiTBR+GHUPXnP98QoslxcPOgUZcXkloDHjkPf4b/+zJan41 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 Wed, Mar 8, 2023 at 8:53=E2=80=AFAM David Howells = wrote: > > The new filemap_splice_read() has an implicit expectation via > filemap_get_pages() that ->read_folio() exists if ->readahead() doesn't > fully populate the pagecache of the file it is reading from[1], potential= ly > leading to a jump to NULL if this doesn't exist. shmem, however, (and by > extension, tmpfs, ramfs and rootfs), doesn't have ->read_folio(), This patch is the only one in your series that I went "Ugh, that's really ugly" for. Do we really want to basically duplicate all of filemap_splice_read()? I get the feeling that the zeropage case just isn't so important that we'd need to duplicate filemap_splice_read() just for that, and I think that the code should either (a) just make a silly "read_folio()" for shmfs that just clears the page. Ugly but maybe simple and not horrid? or (b) teach filemap_splice_read() that a NULL 'read_folio' function means "use the zero page" That might not be splice() itself, but maybe in filemap_get_pages() or something. or (c) go even further, and teach read_folio() in general about file holes, and allow *any* filesystem to read zeroes that way in general without creating a folio for it. in a perfect world, if done well I think shmem_file_read_iter() should go away, and it could use generic_file_read_iter too. I dunno. Maybe shm really is *so* special that this is the right way to do things, but I did react quite negatively to this patch. So not a complete NAK, but definitely a "do we _really_ have to do this?" Linus