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 CE294D3ABCE for ; Mon, 11 Nov 2024 16:29:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 109386B008C; Mon, 11 Nov 2024 11:29:55 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0BA2F6B0092; Mon, 11 Nov 2024 11:29:55 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E750C6B0093; Mon, 11 Nov 2024 11:29:54 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id C74A56B008C for ; Mon, 11 Nov 2024 11:29:54 -0500 (EST) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 42D47A19FF for ; Mon, 11 Nov 2024 16:29:54 +0000 (UTC) X-FDA: 82774349490.30.5165E1F Received: from fout-a3-smtp.messagingengine.com (fout-a3-smtp.messagingengine.com [103.168.172.146]) by imf04.hostedemail.com (Postfix) with ESMTP id AF7104000A for ; Mon, 11 Nov 2024 16:29:00 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="v VBPWXG"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=lygO0h6i; dmarc=none; spf=pass (imf04.hostedemail.com: domain of kirill@shutemov.name designates 103.168.172.146 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731342464; a=rsa-sha256; cv=none; b=OklUU2Ee+HZ/AszgHJGQRpwnU+CBqnt8ASdCfSTFieG3jRwUmtoMa6OtdmyqOt2r+s3a1X YV6ykUKjfyJFq8jh29ZHTh/ljdp3/VJfv6h94SKTjfQOVwHh7WInL5NLDNjd1KOmYVY4dl OLjNBjIuAwE+e/ZOm6bYjsz6tLh8HCw= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="v VBPWXG"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=lygO0h6i; dmarc=none; spf=pass (imf04.hostedemail.com: domain of kirill@shutemov.name designates 103.168.172.146 as permitted sender) smtp.mailfrom=kirill@shutemov.name ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731342464; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ghB/11Aswprc8zwkP+jhTIoBLnJ8zHQI/9i63LpDVIw=; b=7QOZgWx/DVY6JSnJdqQeuGbYeXZmFJsp9PMv+YK0Iw1xV7Q6tl9BSiyJz4bc68+mrVrcqN IywvKkbwOV5a5R47PfInMQgAUL7katIH66dxwTMI3vBpcTfZZjbYAlA4l6QJmtpueMlgSN no4hHE4ZERkBLxJ9EJ/ruHBE8TCmdwQ= Received: from phl-compute-08.internal (phl-compute-08.phl.internal [10.202.2.48]) by mailfout.phl.internal (Postfix) with ESMTP id 6EEA91380687; Mon, 11 Nov 2024 11:29:51 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Mon, 11 Nov 2024 11:29:51 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shutemov.name; h=cc:cc:content-type:content-type:date:date:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=fm2; t=1731342591; x= 1731428991; bh=ghB/11Aswprc8zwkP+jhTIoBLnJ8zHQI/9i63LpDVIw=; b=v VBPWXGWMIhdlSBeHsMrTohRJoM9UYbz9S602/raXt/v2wnuBeCIAwo6MOfSiehxJ Lffdqj17L3fmXJ8RWxe1JE6yEoMaaOZGayZXqKGYrKwYAMgerAJn89Ub4vNOLlH3 Uv6tQDTmh4AqsgZyLV7oFDSpO8le8Ty+LxkIgve1oLAbZ8XZ6Sb9CSuDJGgpIIeU Wc6HwsyXiLWG7qYJ9iBaJ2GkyXMRVYnwSiGsXlzUHkKUFX7lEV9ap6lCcuZQ66OM wDfp3krIPZdEChaQIT8Au+ki2haIFYrUPpEVToaNcn89geVkW41fFRfXKcb4PDGO q/4iFYcOGHLKgMH9FUlSA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t= 1731342591; x=1731428991; bh=ghB/11Aswprc8zwkP+jhTIoBLnJ8zHQI/9i 63LpDVIw=; b=lygO0h6iu5AaCpwhuYj6D2rFfQ8oI+8CBZC3IHlHCUQEWl0XEMe O8uvskoLqrfdufaaWl4GDGOmhBjfUT5LhJAeMshlpjAdPli+B8YeNWNbVygWrRbB o4hz79TABlCH4c0ADNIvsFA+fbIfmt/RTj67htJXyCX2VXsYu2qyQMMX7JPAxXe2 SsSdX1ON8AKpG3eAe4pVLtkA8He9xKQa7AlknenjpObi0nqBPjdzjvAezHqiGsa5 XpJR9XOpTpNe+Mh7cjnFwjyg+b1V5TvAK82AAMx2kp5zkOxxf/i9fmhV7kCXnHHU owZoxwdd/0yqJgao43laGnuB6SxeBKMlDyQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddruddvgdekkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehttdfstddttddvnecu hfhrohhmpedfmfhirhhilhhlucetrdcuufhhuhhtvghmohhvfdcuoehkihhrihhllhessh hhuhhtvghmohhvrdhnrghmvgeqnecuggftrfgrthhtvghrnhepffdvveeuteduhffhffev lefhteefveevkeelveejudduvedvuddvleetudevhfeknecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepkhhirhhilhhlsehshhhuthgvmhhovhdr nhgrmhgvpdhnsggprhgtphhtthhopeejpdhmohguvgepshhmthhpohhuthdprhgtphhtth hopegrgigsohgvsehkvghrnhgvlhdrughkpdhrtghpthhtoheplhhinhhugidqmhhmsehk vhgrtghkrdhorhhgpdhrtghpthhtoheplhhinhhugidqfhhsuggvvhgvlhesvhhgvghrrd hkvghrnhgvlhdrohhrghdprhgtphhtthhopehhrghnnhgvshestghmphigtghhghdrohhr ghdprhgtphhtthhopegtlhhmsehmvghtrgdrtghomhdprhgtphhtthhopehlihhnuhigqd hkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopeifihhllhih sehinhhfrhgruggvrggurdhorhhg X-ME-Proxy: Feedback-ID: ie3994620:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 11 Nov 2024 11:29:48 -0500 (EST) Date: Mon, 11 Nov 2024 18:29:44 +0200 From: "Kirill A. Shutemov" To: Jens Axboe Cc: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, hannes@cmpxchg.org, clm@meta.com, linux-kernel@vger.kernel.org, willy@infradead.org Subject: Re: [PATCH 08/15] mm/filemap: add read support for RWF_UNCACHED Message-ID: References: <20241110152906.1747545-1-axboe@kernel.dk> <20241110152906.1747545-9-axboe@kernel.dk> <221590fa-b230-426a-a8ec-7f18b74044b8@kernel.dk> <1c45f4e0-c222-4c47-8b65-5d4305fdb998@kernel.dk> <9f86d417-9ae7-466e-a48f-27c447bb706d@kernel.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9f86d417-9ae7-466e-a48f-27c447bb706d@kernel.dk> X-Rspamd-Queue-Id: AF7104000A X-Stat-Signature: 6h9hgtwizkb4d4xjjy8q5w935fs3dz7w X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1731342540-120147 X-HE-Meta: U2FsdGVkX18zQxgB4AfqCGpRThunbGVl38xIKoLFeriomPW4wDsp/3YGuBTne4YV9aERv4BvNQCXtVmEpRIE0xDRCg3Yi53f7UHH/sHRZa0xZJ0RxydxdmMAj1K6BcRM44pux89Y2mcIFMvzWF75LhpViMbqmBVO6mmnIspXUwGi+s5dh3KBHIUOoYryjLwibafd2JxvtsoG5sWkwddZCli66BIZx5Jnw6OFcy2lKmJKZsUq64DnjuNzbmZXaON0ODThjfD+4ngCqW7MssKDbfa0NecUOGUc0mUAfrmHj/um5XFlVbOE+JTrqxY/L0MEXga5AnIR4JJuHQGSNl1WaI4nyalfWJVN8MLGW7U6T9lHKw7oQz+m8tOR+wSxpnC9aBLSKMAUh/7krqE0R5qIdDQanArhzvk6Utq7dUxlLmZBextBfG8cEJ53WPwk88o7AMk+0BojdAbcF9AiLlMrJ6PGom2dY0cQxNvOC4Nf+WVDlxZgtkHnazXAFfp8Yviedre45oh3C72Og4qg1ijI8OwjhvfOVqocGAITSCXyq4yXbQyxYQMjlYD558b10JCvbwicHaIAigSPNizazoFYfDk09DHcd3tNRqwNjbuYRrugihVxqPezYvd7RUZ+LpQnnKWHwNNgQ6i5YOmMZMoHFXZ6fGw/KP3d31uC6H+Aj+RsbRQH1rWXvj9ctvTM2QhHJRpJTGpJTy2l4xrA7fSku9qak73deQvixiASZwqe1l/QXecdHRNnBZV05xLPzMr1tjCFQealfhMlKaI1aaLu5yJ2MVZAQqPyeRYFkofVKFRA9UEk5vQzPT8bf9yyTAeiPWkJ0jU1x/jflSCEpdQoB0lNZSF51elNGLsP/3Y3P2EdU+d9Mzb00aA/TAvdSNbjniccZZEWCTYaIb8grYa6TQ9GJKX+DVrWvk8Vy+CUJC2dFA+h4L6O5njvYClwID4v0XlVzOj0r+m/uPn3Ijm 0/LkMwpu KMyMoEKyGCGpuVr5+YYDhTHQeNWGG0PpiJpz+UJnEfA1GbUiMHm3ERnB7eYykJdCmO6nf/S6SAqktkKnowIYS12zra7zMWZnanHbjyJc9pfI9M0pBjImkijL9/di5KfKY4nvNlDuMcr5ofJ5nkep4X1FjL6p7jdzHJO1yGEx77/4huVNBltQCxfyrq6DMZw/e/i276ZukgVAZQFSqy7BgCwXTpYBGPSZ2JqjX0B193AZiXrp/qnM7DvAKSIoOkme55ACdzDMcIo/zZ1QMmFdbDyjdyX7oxu7G+aFXSUc1utBDaqn3AkAkI3tyKVa+wobCL9C7SLy1SzTYMmxs9cHfA08SPj1EISeDzhhK1cNrU2GBGdbdJzpmVr3EkhCau4PbhU1UD6wSTnI59s+XRuKbIiOwtkz8DyVXbTbE 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: List-Subscribe: List-Unsubscribe: On Mon, Nov 11, 2024 at 08:57:17AM -0700, Jens Axboe wrote: > On 11/11/24 8:51 AM, Kirill A. Shutemov wrote: > > On Mon, Nov 11, 2024 at 08:31:28AM -0700, Jens Axboe wrote: > >> On 11/11/24 8:25 AM, Kirill A. Shutemov wrote: > >>> On Mon, Nov 11, 2024 at 07:12:35AM -0700, Jens Axboe wrote: > >>>> On 11/11/24 2:15 AM, Kirill A. Shutemov wrote: > >>>>>> @@ -2706,8 +2712,16 @@ ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter, > >>>>>> } > >>>>>> } > >>>>>> put_folios: > >>>>>> - for (i = 0; i < folio_batch_count(&fbatch); i++) > >>>>>> - folio_put(fbatch.folios[i]); > >>>>>> + for (i = 0; i < folio_batch_count(&fbatch); i++) { > >>>>>> + struct folio *folio = fbatch.folios[i]; > >>>>>> + > >>>>>> + if (folio_test_uncached(folio)) { > >>>>>> + folio_lock(folio); > >>>>>> + invalidate_complete_folio2(mapping, folio, 0); > >>>>>> + folio_unlock(folio); > >>>>> > >>>>> I am not sure it is safe. What happens if it races with page fault? > >>>>> > >>>>> The only current caller of invalidate_complete_folio2() unmaps the folio > >>>>> explicitly before calling it. And folio lock prevents re-faulting. > >>>>> > >>>>> I think we need to give up PG_uncached if we see folio_mapped(). And maybe > >>>>> also mark the page accessed. > >>>> > >>>> Ok thanks, let me take a look at that and create a test case that > >>>> exercises that explicitly. > >>> > >>> It might be worth generalizing it to clearing PG_uncached for any page cache > >>> lookups that don't come from RWF_UNCACHED. > >> > >> We can do that - you mean at lookup time? Eg have __filemap_get_folio() > >> do: > >> > >> if (folio_test_uncached(folio) && !(fgp_flags & FGP_UNCACHED)) > >> folio_clear_uncached(folio); > >> > >> or do you want this logic just in filemap_read()? Arguably it should > >> already clear it in the quoted code above, regardless, eg: > >> > >> if (folio_test_uncached(folio)) { > >> folio_lock(folio); > >> invalidate_complete_folio2(mapping, folio, 0); > >> folio_clear_uncached(folio); > >> folio_unlock(folio); > >> } > >> > >> in case invalidation fails. > > > > The point is to leave the folio in page cache if there's a > > non-RWF_UNCACHED user of it. > > Right. The uncached flag should be ephemeral, hitting it should be > relatively rare. But if it does happen, yeah we should leave the page in > cache. > > > Putting the check in __filemap_get_folio() sounds reasonable. > > OK will do. > > > But I am not 100% sure it would be enough to never get PG_uncached mapped. > > Will think about it more. > > Thanks! > > > Anyway, I think we need BUG_ON(folio_mapped(folio)) inside > > invalidate_complete_folio2(). > > Isn't that a bit rough? Maybe just a: > > if (WARN_ON_ONCE(folio_mapped(folio))) > return; > > would do? I'm happy to do either one, let me know what you prefer. I suggested BUG_ON() because current caller has it. But, yeah, WARN() is good enough. -- Kiryl Shutsemau / Kirill A. Shutemov