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 1C1C9E6781D for ; Mon, 11 Nov 2024 15:51:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 887B46B007B; Mon, 11 Nov 2024 10:51:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 837436B0083; Mon, 11 Nov 2024 10:51:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6D94B6B0085; Mon, 11 Nov 2024 10:51:54 -0500 (EST) 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 4E05D6B007B for ; Mon, 11 Nov 2024 10:51:54 -0500 (EST) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id EFCB01C4D96 for ; Mon, 11 Nov 2024 15:51:53 +0000 (UTC) X-FDA: 82774253394.25.B337DA8 Received: from fout-a3-smtp.messagingengine.com (fout-a3-smtp.messagingengine.com [103.168.172.146]) by imf03.hostedemail.com (Postfix) with ESMTP id 4FA242000C for ; Mon, 11 Nov 2024 15:51:33 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="U DuNNtg"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=RXlIDeTX; dmarc=none; spf=pass (imf03.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=1731340225; 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=sb7goKiV2lwec3DtIWx/4XS6HkWtaXhVKBL0qgh/MLk=; b=GJJEfHM6VGvFQLUcMiBzKsyKtYseQ6+x7W0ylhyECnBMg7Qc4HO2dQ+Dw1q6Z2zsOlETaK J0/c5oonkA9vNVX9SstjnnbbY3ew4bsPQD9lHUMU90OyUJ2FDRR8Bvrinm8TU+YQnsmlX3 yNhG6xi/5cpnUEnMdlv+pm6IoS8iAKM= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="U DuNNtg"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=RXlIDeTX; dmarc=none; spf=pass (imf03.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=1731340225; a=rsa-sha256; cv=none; b=Ez81r66rToF68XQp0D4dPB7KMfcRu025XVXgOczSc8SiB1EtGZmB9aE0zvFjtsWE8s7ce1 xvsutRSu5FlbD+PNIGsJPYfAODsu7YINtXf2omJW5qrk0lQZG1jMIgsox5Ya/a5nF2C29K 4U1OgF4C1dmWzCmfaSTnkWbEbMiHzvQ= Received: from phl-compute-02.internal (phl-compute-02.phl.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 6552A1380679; Mon, 11 Nov 2024 10:51:51 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Mon, 11 Nov 2024 10:51: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=1731340311; x= 1731426711; bh=sb7goKiV2lwec3DtIWx/4XS6HkWtaXhVKBL0qgh/MLk=; b=U DuNNtgK30tGFfgc46KCYp1pkTqcNpgfcP0jMEf+aU88lgw1/PHLKV913yGYrPBoS AHzH0TvfNj3XA0n1TBmwR8P8BbZtQ3JK/5i10JZaQ8rzxf9YfQ2y7Jtop+RECWRY N3Dv+SmVmTMfStL4r67tAl8u2NerCveEM2EbmCd+4AOisvYdfsEwzcZtBJa5FqoD 4cwJ7vgKWgxDKTnvgUR3PaWePjGNA12xG/5brvw4qAUW3+iiKtqFrZwP/78e6LwX mU+R1ojclGqv5/NqLYSeHErEwpJ0sAd0D4tOJOCmPTUBYRGZYG2SnM9Lobd7Ga09 Eoj6wxRj+PQcPWwE5lrtA== 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= 1731340311; x=1731426711; bh=sb7goKiV2lwec3DtIWx/4XS6HkWtaXhVKBL 0qgh/MLk=; b=RXlIDeTXFg8aCHV0FLht94dARccM2sXlLp1TjVtRCP7SNh0ZeXI 3muWXleEigeqCHIsVaiX6Aupb3UwdMLgtI/LUBQ1L5dYQ6EsBr1HZNwIxFedqeWh z4uEgvSsA2eIjPTfOwIfg+5Q9de9qhL0btjXj3OVxs3ZEkkwJv2EchYKyop5lrl1 1ax7EtxXVqCNh/rMPbDd+QTU97Z9r7FkCaJ1W3nCWSQ+y3yDfmS6Qi132+ANXP6h jPV2YhsxJ/iiE0Zk9xweFN3OlyfQbMDBlT7nb8bobo4AMA3XdrmnZhvdd/LWFeyb VRJvfbNYl0f3IWaddvd/Z/sxTV4rC5nYKqg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddruddvgdekudcutefuodetggdotefrodftvf 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 10:51:48 -0500 (EST) Date: Mon, 11 Nov 2024 17:51: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> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1c45f4e0-c222-4c47-8b65-5d4305fdb998@kernel.dk> X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 4FA242000C X-Stat-Signature: 8pmax7zawf7tjutyt7effiw8dgmgsxp4 X-HE-Tag: 1731340293-902107 X-HE-Meta: U2FsdGVkX19aeCjeGklID1X7xyyAwkep5a6VCuS9wmD00/lPXh7pSqcIt123N4eUig+JcE/h6T/ZSOS0uGpUEH3OUgLfQbP55pqPImiI3rNSzQh71zYXzKhE6mdxNavJlKowge8CvBGAUzLbDdQr9vb17dQR08vM/G3KgnBfiaP0wUevQLy2vJCYEUx74DrK7U3ip5xf9ieULsCF6Iw9XS0VqIAONfV47weZiu8qRtkYn74SR59+0sCve8/ulGqJqtUCK0RFcgl7QbSiMZ7s5IO4H4rHDBl3T0Oeh/LPxUSE4z49Yc+pKs9QP7qbAaZoyE9IlZ8oBrjtVQnsc1BUvwt3FZU/0R7FDR7bwZpE+ARzt8I36Uv3VwPFmFwsk/pd9mrdH5pr0zxxqck0DHla036JEA0EksVF1MisVeydr8zckPJsxCbs9Z9SZ2xGdW3z1h1rBr53/01eepnJUeO+1mBKzWcvUh3D/RUVdk3TpO0LKgU8//8lj2cEkYCym8MCqdfI5GUr9G9scIiTvtkucUXcNZckJQajG7LX9GxdOpSsd1clYJ9PkCvDdA8QyDyhrrJwG/NNt4d8mQsRXGiAF6PkjvAtg0RUY02JZhgV9GTMaFvEyHftDTPknFsGCTw6pAWsKQSwSBWr+DOijLFw3ceBU/KeDxTEMqiQ2ktDFl6zFN01P0bKleEyLWNNTN+SJol0M1n9vGcQmz0dN+Lb+725fQefR4nuzldtDWpV3B/MWLRXIxpyW0WUh1y6l6xsfec/0Zh/p2QWeovRsfRhbaeycOlXqERdiTPfY8SuWZ95qmCDaSP1a9W0FNmTYO2EnSz/O+09noPcOzdC1q3GEj/Q7F0TrOVQRpKkr/7bfihF4Kc1RDW6sGyfwx5PUyHQ/X4PDrtjjsWURI5ffBmmvVZEw94Vlpgm3uyOze2ukIckdSaucK4pPSCfev3R1SmVvmZOzkhMoI4/qVbFSQW 9Q9ChpZq Kwj/bo244WzzcqmAxwypCGSK7knm44KJu8cm6KZzKvnhFsdwS766lgEJavNFNSbq/r/oPqJfKeZYqzRzRK8Mand/KF0bjWMnNaw5A42H0dAcbkbQMm3SdaCGz2JihKwxA0SbkpEFGuSIy5NB87aPBHnrPq3YnNSYQODXUdOwqwP+Jy7BdMuzIiCieKdS+VxUBt80RpuB55LQR5DlDGGcBIH98FhBpr77aJqAho+sZnhsE/tXvNNBi78s+kiAiQajxr2YplXAOrdMqfwONj65PQZaxLZ+OIDHkkDSZVm3Z6xrr2BLE20UfzxDRyO9Manx6vRKDM5h+aejq7WzcO1PwQeQqHgFdDLqEuLan/gF6TY0vbSTfZP723ZsOmljT4Ku/wHx2538/rnrR8IJF5w/K5iKuCZG4+KZV3ZHM 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: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. Putting the check in __filemap_get_folio() sounds reasonable. But I am not 100% sure it would be enough to never get PG_uncached mapped. Will think about it more. Anyway, I think we need BUG_ON(folio_mapped(folio)) inside invalidate_complete_folio2(). -- Kiryl Shutsemau / Kirill A. Shutemov