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 A3B12C6FD1F for ; Tue, 14 Mar 2023 18:08:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1241F8E0001; Tue, 14 Mar 2023 14:08:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D4AA6B0074; Tue, 14 Mar 2023 14:08:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EDDA68E0001; Tue, 14 Mar 2023 14:08:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DFE556B0072 for ; Tue, 14 Mar 2023 14:08:52 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 91F3D1A08C4 for ; Tue, 14 Mar 2023 18:08:52 +0000 (UTC) X-FDA: 80568289704.17.BF98677 Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com [209.85.208.52]) by imf10.hostedemail.com (Postfix) with ESMTP id 73FE0C0018 for ; Tue, 14 Mar 2023 18:08:50 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=FzBhWIKQ; spf=pass (imf10.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.52 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1678817330; a=rsa-sha256; cv=none; b=vC0x58vNa6ymKiKDUDTEu/nowFtf7VzvtjbPLBQ4zo8VFFSUhi9V1w/pzwHK1E9AJgIimY bX7rP2LXtlAfbZPS5vGOb/hS4zRrtlyPaja2BaPJaYuic1LZ0EmdXJsaVA4bg7riPSiwvI EbJGYDdpPNcpryDq2MLLWLvNQiQIYUE= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=linux-foundation.org header.s=google header.b=FzBhWIKQ; spf=pass (imf10.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.52 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=1678817330; 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=BaNrWV0j7xcmGChzOfmkTnIc3tuBbFeTK4GfA059lX0=; b=sBVCWjFDcZqlq1aj4djRIMRPTJsaKW644CjmKhAJ/WJyjS4i6a2tzTPw+oUvaoCDfeBWJE /sMCEi8/W6AtSX+vBSUICAb5i/os80MBMsRabSPB+anvjaEMMEtupEgAUH3HPg1pKzP70+ xvBUvcG4oZbr7XO9WOQoqcVuSZaTSXs= Received: by mail-ed1-f52.google.com with SMTP id z21so277686edb.4 for ; Tue, 14 Mar 2023 11:08:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; t=1678817328; 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=BaNrWV0j7xcmGChzOfmkTnIc3tuBbFeTK4GfA059lX0=; b=FzBhWIKQKfMFR6B5ilt/5oqHH3+zMj5IdhfJq0Gako3iUbfF7oSHrfw2GhR22vWPD7 xEKu5W5d/30V8nnb2JRtYiS5jcyPhuqcwZxDMI57GOnusiSbbvlP4pLJwU99hDd/JV6p /hqV2d3m02pEcJiKF53xr9DcC13yT12C1sJLY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1678817328; 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=BaNrWV0j7xcmGChzOfmkTnIc3tuBbFeTK4GfA059lX0=; b=NQFZzOdIsK4i69vVxbqVDAhvDH4xGpvAKoQX/WZZHVnwoLWegHfP/Z8jfM2UwlayGj 2TzLKaM3Un96jigfmhos8ArQwwW6QfiZZsMyh9wwmkihDDd9eG6TmcT4n0jiw7+DILZ1 0jsSE65ykZRmRtVoM3oj44a9n2HvuyWHhJC+g1n3r4MqrQCwe21fOIbV2F8WfJTT9bt4 8EtoYsq44nX2eQACY72AvP0q62dK5or2kyvtfP1gCICPUCkNYJvOVq0qwtmSRytmsEE8 5FOeKNGWz/wHZdeKtVV3MRNVfS7dxdbYwtqed4VXtM8SXAXwk+G3B8VGPjR4FecW8gRs wEng== X-Gm-Message-State: AO0yUKWkDf4ItL3sfnNtE214nTFjsA1zkqjBeB+GUekmTWdt/uqcRFAa Uh+pYazVIHMuutahrYxJPtenrwaaYvSY8VbzHzl/vQ== X-Google-Smtp-Source: AK7set8iqL3ttR63tnEZ5TZEvJITxpF+rNtBwf6NshAI4UEUG1IR0XOlUFgGgVW1r2sOOveTCjsmCA== X-Received: by 2002:aa7:d444:0:b0:4fe:19cb:4788 with SMTP id q4-20020aa7d444000000b004fe19cb4788mr2803297edr.42.1678816979749; Tue, 14 Mar 2023 11:02:59 -0700 (PDT) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com. [209.85.208.44]) by smtp.gmail.com with ESMTPSA id a2-20020a509b42000000b004e48f8df7e2sm1362181edj.72.2023.03.14.11.02.58 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 14 Mar 2023 11:02:58 -0700 (PDT) Received: by mail-ed1-f44.google.com with SMTP id fd5so31624542edb.7 for ; Tue, 14 Mar 2023 11:02:58 -0700 (PDT) X-Received: by 2002:a17:906:c30e:b0:8ad:d366:54c4 with SMTP id s14-20020a170906c30e00b008add36654c4mr1933623ejz.4.1678816977991; Tue, 14 Mar 2023 11:02:57 -0700 (PDT) MIME-Version: 1.0 References: <20230308165251.2078898-1-dhowells@redhat.com> <20230308165251.2078898-4-dhowells@redhat.com> In-Reply-To: From: Linus Torvalds Date: Tue, 14 Mar 2023 11:02:40 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v17 03/14] shmem: Implement splice-read To: Matthew Wilcox Cc: David Howells , Jens Axboe , Al Viro , Christoph Hellwig , 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-Rspam-User: X-Rspamd-Queue-Id: 73FE0C0018 X-Rspamd-Server: rspam01 X-Stat-Signature: 5surgkacrmm9f4z81reknes1eiknuex7 X-HE-Tag: 1678817330-675507 X-HE-Meta: U2FsdGVkX1/K/NMoMDEyAuJQO/PgQM7ZqCyAtuKFzn7Jtt0FSfotUDz9mWAP1qWkmKjExL7eU/HUIEOTpOLpBJEFMjNPiuD3o9BadOrj+uSfjAnoCBMvBiLqk/9gdnFS0Km+C0r8FbKxphNKWfzXD9fHx+F5VFezSAUfcI5Lr8BOE+Ge4BEUl9Llxz0rK1iXdN1rReI7McHzGD5NoBhjD31DjwJPyFLoKreUTCaTTn5cW7DHON+GB6K4tYg60uWsqqjMiFBN61mzzg5Iysr/2RQsgyzRlVPDA0HVUVq40r+kLdgLuRTx2ibf3ethFt8Gmbx+79fLq8CZkaMeA2VUWz/jAjpNxONWk/rLMLfj2miNf0Z+bYwkc8cEjLYpe+S0lg3JtpNAR7Kp4/KazJUSAExOlqQM9Z5rY57PPna4VSpc0PH784zWWSrf57j+K/5CGY7OkDDS2UylIWzg3YLB7dPG7FomrlilV4xz16tgR31QqXZJvQYyN6NEn24YEDdZNqmsee1RND+ik/u3JCD7JUH7wCqMy/Czry2TjVDaXHzfirtQeEoPYcrwBESEQ90VtCpFKPh6Mjs+VmvHu6vT2H0VBUQtQ70uGL82PP1ALpeWeez6oM0ktJME5ipVKdXSM9hmaoiQJKV0eGwU0E1hJUyQnGIzupEB/JFd30i/VvK0NlSioso9WJl8dSjJmZ+e2KXsNakuI+XAvC0IXrIcVkeMca/LQkg/GtXoF2w1Pf6TuZ/lWgfKksOaJI4ylZ2o0h+sBPufpWaLaPi/dTcsXOX5YOyjSUd0HX8PWM0tjRK6KT5hRFgDVF7Jet/eic3O2VzSkyZmmNi0+Bil5MxjlCTslVJDa9ElR3FHDpc9NYgqVJ4G8PK3AQv6iVl77aZwyWyHi5mUQD0pBTCeMpXj3+yOoIFiY6RaClmMQ3E3eauqSIgNwM7L5QwMmMHP3UP9Qf/BNJP4yntSm3/kAnL VdF/cHIS bX9SQxAFVHm+xvjthGSu0etfaUkwVYjPTQHE5T11S9ZQovUm8FDCju0lv+kPtRRoGpb5mWmMlgJ5z3mQNf05ukwUvb9y0Ik52maBtQ1L0gHfltQLNjN2VizjPlIckSsIPF6rg33bvF9E6Pc+39OWrGZMloQ1lrTP1OR7KyymBH+T2ZOE/csBrGkNkUYZwBIei+nlIvSNtBr5E0k3s4PsvJ77VwQNJXq6HLGKn7mCLCtR9w2ukg83KBC73iNFijRf7pPfFftvBt2Lmk2NLOubwp2T0uRBKpt1qrdoXetQzGv7CCpEwsBzQN1ohR2aHPQA/EedaPJrvsqD9m3EB8C/aJXB+bAdrEepPwN64Mnz/GJJwMtyW5Lv3ZQB8W+8+SuzBmzmVqsmv5b1xqsg+Z7ELXJH5NAuKF0z/91ecuEkOSdm7rxyIqLB477e5hV0G/v9nqxJXbBRbVP0NEd/UcPss0cakc8Hy7K2ktkr0Qyf1P9XNKwnyYHcQlhfI92xmFHkG8B9N+3/W+XQKFQ20KyYOsKu4+JW0ik0BSQ1z/7QfwWeR5MlC6vGnuLccfhlhVubD5PQMC0/NIgaGVfU= 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 Tue, Mar 14, 2023 at 9:43=E2=80=AFAM Matthew Wilcox wrote: > > The problem is that we might have swapped out the shmem folio. So we > don't want to clear the page, but ask swap to fill the page. Doesn't shmem_swapin_folio() already basically do all that work? The real oddity with shmem - compared to other filesystems - is that the xarray has a value entry instead of being a real folio. And yes, the current filemap code will then just ignore such entries as "doesn't exist", and so the regular read iterators will all fail on it. But while filemap_get_read_batch() will stop at a value-folio, I feel like filemap_create_folio() should be able to turn a value page into a "real" page. Right now it already allocates said page, but then I think filemap_add_folio() will return -EEXIST when said entry exists as a value. But *if* instead of -EEXIST we could just replace the value with the (already locked) page, and have some sane way to pass that value (which is the swap entry data) to readpage(), I think that should just do it all. Admittedly I really don't know this area very well, so I may be *entirely* out to lunch. But the whole "teach the filemap code to actually react to XA value entries" would be how I'd solve the hole issue too. So I think there are commonalities here. Linus Linus