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 84CEBD32D78 for ; Tue, 12 Nov 2024 09:32:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 083A96B00D1; Tue, 12 Nov 2024 04:32:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 00EFF6B00D3; Tue, 12 Nov 2024 04:31:59 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D77E06B00D5; Tue, 12 Nov 2024 04:31:59 -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 AFEDA6B00D1 for ; Tue, 12 Nov 2024 04:31:59 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 52319C187D for ; Tue, 12 Nov 2024 09:31:59 +0000 (UTC) X-FDA: 82776925476.18.409C6C2 Received: from fout-b3-smtp.messagingengine.com (fout-b3-smtp.messagingengine.com [202.12.124.146]) by imf13.hostedemail.com (Postfix) with ESMTP id 7598820018 for ; Tue, 12 Nov 2024 09:31:14 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="x jBcNWO"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=nlcp8EFB; spf=pass (imf13.hostedemail.com: domain of kirill@shutemov.name designates 202.12.124.146 as permitted sender) smtp.mailfrom=kirill@shutemov.name; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1731403684; 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=FNlD3yPiuWbAqLIV7df6vsprp48I6w6nBmNGvoAwP9I=; b=wGjL8pr7ujiUjjb3FXc64fN577jKQSo58KvNv+0waVbCXGIfG0X9ioiLwA4G83Pqm4qigO IBJCTUSW4AuuZcJIUhtRCghkZLLZbppGUvFAVAKW1UykF7rs3qxQIQ/xAhpxNVYunn0CdO pnBLcu2WGToqXq6L6+ndLagkNqI8W2k= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=shutemov.name header.s=fm2 header.b="x jBcNWO"; dkim=pass header.d=messagingengine.com header.s=fm3 header.b=nlcp8EFB; spf=pass (imf13.hostedemail.com: domain of kirill@shutemov.name designates 202.12.124.146 as permitted sender) smtp.mailfrom=kirill@shutemov.name; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1731403684; a=rsa-sha256; cv=none; b=5hvWyFdZiG254vIfNUz9JPVEhugbgpXg9qh0Hc0Do9fbUQkOas19TvpbybNdXBT1aLJMni yPrxJKyDkfmQ7pAEdDJRmGfcDth5XV2P4kVuXYW0Twy8gmKGYlP9Ck57aBnLwArWBtyyYC T4wPj6XCeqbMTSkH+21oakuxBzh26tk= Received: from phl-compute-03.internal (phl-compute-03.phl.internal [10.202.2.43]) by mailfout.stl.internal (Postfix) with ESMTP id 23AC211401E3; Tue, 12 Nov 2024 04:31:56 -0500 (EST) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-03.internal (MEProxy); Tue, 12 Nov 2024 04:31:56 -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=1731403915; x= 1731490315; bh=FNlD3yPiuWbAqLIV7df6vsprp48I6w6nBmNGvoAwP9I=; b=x jBcNWO9IjhEwVG69snNMP2cVKfiSF+T/WgMRoXX9WM2UOkn4xBbFryL9MEIZOZmr dSgQq2vyN9mGmE0uirM3PCswTym/cB0TwQcULav1Dt/ZLcc3/nkhG6oGx0HW9cPF e9CnR1RPAjYbc9BTUdw5CcrRihrlfNHrJrSic4SOhjhzDjGhkn99J9mBw5Po5kMN 5s0IXX8uRR7+vcuBHR/+ksxX3/a8w5gjCKEvc9Wwq/8FMvIU334N4o3HA95A7DuQ hPtRQO6Ayy+jYJk86DE+h8o3FNxmxcbmjEQVBOF/wRytPKYWk/gMGmuJ+6nHh18H 5Pi/wL4Hg+VT8vVc2cg0Q== 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= 1731403915; x=1731490315; bh=FNlD3yPiuWbAqLIV7df6vsprp48I6w6nBmN GvoAwP9I=; b=nlcp8EFBp3zKT6lrkjB1fbLOxMHHB8nQRmAPaInKCvSSbumtsur GrjU7DBjELcgTStMHU3tgHquiS7xFPcNTsDuZuZvUA5l2nbwuMaEoYZzxVZbQKRN Ay/rJnoFcTZ091nSErflIkpd67cj74epKCTmvMl4zX6xTz4MBTuXzjdonNFINvjI UeVba9Y3PgxsFtCXDPICKg2z7+aaZRoaSBaC4sTvoUBSFhkH74zRX41p0OZeszey IEsod7+bFCWmtM4S+HVLR771UzfXMpmNw5ctLLH5Xt51vROn/MC4VkGDag6lBu29 dmYzbWOHbbL5ssZwDD/53ebCLavyVgPTujw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefuddrudeggddtvdcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpggftfghnshhusghstghrihgsvgdpuffr tefokffrpgfnqfghnecuuegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnth hsucdlqddutddtmdenucfjughrpeffhffvvefukfhfgggtuggjsehttdfstddttddvnecu hfhrohhmpedfmfhirhhilhhlucetrdcuufhhuhhtvghmohhvfdcuoehkihhrihhllhessh hhuhhtvghmohhvrdhnrghmvgeqnecuggftrfgrthhtvghrnhepffdvveeuteduhffhffev lefhteefveevkeelveejudduvedvuddvleetudevhfeknecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepkhhirhhilhhlsehshhhuthgvmhhovhdr nhgrmhgvpdhnsggprhgtphhtthhopedutddpmhhouggvpehsmhhtphhouhhtpdhrtghpth htoheprgigsghovgeskhgvrhhnvghlrdgukhdprhgtphhtthhopehlihhnuhigqdhmmhes khhvrggtkhdrohhrghdprhgtphhtthhopehlihhnuhigqdhfshguvghvvghlsehvghgvrh drkhgvrhhnvghlrdhorhhgpdhrtghpthhtohephhgrnhhnvghssegtmhhpgigthhhgrdho rhhgpdhrtghpthhtoheptghlmhesmhgvthgrrdgtohhmpdhrtghpthhtoheplhhinhhugi dqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepfihilhhl hiesihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehlihhnuhigqdgsthhrfhhsse hvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqvgigthegsehv ghgvrhdrkhgvrhhnvghlrdhorhhg X-ME-Proxy: Feedback-ID: ie3994620:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 12 Nov 2024 04:31:51 -0500 (EST) Date: Tue, 12 Nov 2024 11:31:48 +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, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org Subject: Re: [PATCH 09/16] mm/filemap: drop uncached pages when writeback completes Message-ID: References: <20241111234842.2024180-1-axboe@kernel.dk> <20241111234842.2024180-10-axboe@kernel.dk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241111234842.2024180-10-axboe@kernel.dk> X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 7598820018 X-Stat-Signature: sodpadu5fpey7wp6un4kw8cipe1848tz X-Rspam-User: X-HE-Tag: 1731403874-492718 X-HE-Meta: U2FsdGVkX19CU965z6ak4hLsKErLqgFNh+F9AeeyNTJSMXM+FwmgQXzn0jQTaCpbn+KENzvTrWlEgerMlCeFinknus5LransdIKRULJpcXnHrNMCq/gTLgo5ksIdBZFu5Wq3yBe92FeZ0RKkY+MKeKK1u00JqBvDyaMLqspqDX1GbJsvDK04YmgUIuCJrW6qGOEJniif0Egc5ilARNPOLhnsAMLr5JkAnTzetJIeZa7Ldrdt5wZhEyY3PvfWea9uoL8OQTldxwBEzTDKzUjmMJ7WUdxEyKPPocMQXDrtQ1vf5l1lJ6pEI+EScdGVizSjHhzuAn0i0ehCFRGlNhogEZeK7XGJjV1jhsO+lQxHaFbnuaIOoSpOZTpIBD/LOwds25CxBuWkuGBewrwvhzkYAYntiZdgkoH/7A4BIP7mOqLHDYQehnHOSqNfES1fAnPOtE5TYVhR7MGJiRo36kLdZ/PrHbzZLwEDQCgahO+udccuVaOaCwHgXbGcYmn2laws8X8ztKme7moyCv6BltjYBczn5Z0qb7TxWSpJrxHdT7jBprKk6jDTYMKqpO5iJRXbzAbFeCsb/R6pXkaMgbIX0LOP098LXm+XCsaelive5Z3Is83l+rtri+7DJfA/m5KrwqG63KYCFc7PNvn9SU2hMNjy33MEuYaLXKcMoVenJdFmlUnMk8SmVInVjSDgZVx/dXzfz4t6J3MRat7U07jcPy8D4rlvW7/5bVJwfDxb89aMCMmuQRnoW1bAcUDNAQlfbzyHJnkqQChic0eouJ25ChAc4XipmH+/y/ARmcAOQXHVr9EQPiN2ZjMF81YMYQpIKuJBsAAPg6DIG6AjUFd5ZY8IwLrELYHYIomzCzhAYpUo5DUZWpgRwEa9wffnEl2puz/NBbAdj3EGQKXGL3EyfKHEpF7JWSRdy1pMMkJxIRFCqrZdU+C+1YFAuyunDyu5mINJhJvc5twkmlQuG5Y jVvWJ4OZ D9GGcH7q2m4GOcWwW5J/Btz8Edfpmi0AAIUaOSaq9LG/zn875bSa9Mxmd/8yp4oy1BfRmcrCHPbjGMQ7VB9+UonxN0rpFPbG0alBGdk0BO/P5GHb3Ary8kyT+CjLb7sI2Wm559tWKeZ+wjLydyoI7625Yu3/WkkpyuNi6AJOCxu9I8R78DjAaKVLacSLcdvYgIAUVtCFInb+FlvE9XabuCZLWtU2jxKlda/rOksTMthUbPwAOqanAB3rgeBLhrbGVZ7A34RQoUdBFaB3G9byCCRGo5t2C1GVWaW816QrdXURIEY2QaXJsNwEVqlVR5MGAYItnmEaLl0dnO6p4Qmem6EhO/ub/M5zPK0tm3VVqUZ6U+KONqfjLDHarUnoFFVY+RqsGyc+PbTiy3Ey8BBE1hwzxgA== 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 04:37:36PM -0700, Jens Axboe wrote: > If the folio is marked as uncached, drop pages when writeback completes. > Intended to be used with RWF_UNCACHED, to avoid needing sync writes for > uncached IO. > > Signed-off-by: Jens Axboe > --- > mm/filemap.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) > > diff --git a/mm/filemap.c b/mm/filemap.c > index 3d0614ea5f59..40debe742abe 100644 > --- a/mm/filemap.c > +++ b/mm/filemap.c > @@ -1600,6 +1600,27 @@ int folio_wait_private_2_killable(struct folio *folio) > } > EXPORT_SYMBOL(folio_wait_private_2_killable); > > +/* > + * If folio was marked as uncached, then pages should be dropped when writeback > + * completes. Do that now. If we fail, it's likely because of a big folio - > + * just reset uncached for that case and latter completions should invalidate. > + */ > +static void folio_end_uncached(struct folio *folio) > +{ > + /* > + * Hitting !in_task() should not happen off RWF_UNCACHED writeback, but > + * can happen if normal writeback just happens to find dirty folios > + * that were created as part of uncached writeback, and that writeback > + * would otherwise not need non-IRQ handling. Just skip the > + * invalidation in that case. > + */ > + if (in_task() && folio_trylock(folio)) { > + if (folio->mapping) > + folio_unmap_invalidate(folio->mapping, folio, 0); > + folio_unlock(folio); > + } > +} > + > /** > * folio_end_writeback - End writeback against a folio. > * @folio: The folio. > @@ -1610,6 +1631,8 @@ EXPORT_SYMBOL(folio_wait_private_2_killable); > */ > void folio_end_writeback(struct folio *folio) > { > + bool folio_uncached = false; > + > VM_BUG_ON_FOLIO(!folio_test_writeback(folio), folio); > > /* > @@ -1631,9 +1654,14 @@ void folio_end_writeback(struct folio *folio) > * reused before the folio_wake_bit(). > */ > folio_get(folio); > + if (folio_test_uncached(folio) && folio_test_clear_uncached(folio)) > + folio_uncached = true; Hm? Maybe folio_uncached = folio_test_clear_uncached(folio); ? > if (__folio_end_writeback(folio)) > folio_wake_bit(folio, PG_writeback); > acct_reclaim_writeback(folio); > + > + if (folio_uncached) > + folio_end_uncached(folio); > folio_put(folio); > } > EXPORT_SYMBOL(folio_end_writeback); > -- > 2.45.2 > -- Kiryl Shutsemau / Kirill A. Shutemov