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 45583C54ED1 for ; Wed, 28 Aug 2024 11:38:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A9DE66B0083; Wed, 28 Aug 2024 07:38:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A4E8B6B0088; Wed, 28 Aug 2024 07:38:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 915B76B0089; Wed, 28 Aug 2024 07:38:16 -0400 (EDT) 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 74DD96B0083 for ; Wed, 28 Aug 2024 07:38:16 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 18F8441F59 for ; Wed, 28 Aug 2024 11:38:16 +0000 (UTC) X-FDA: 82501455792.24.E7CC9E6 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) by imf27.hostedemail.com (Postfix) with ESMTP id 3181A40008 for ; Wed, 28 Aug 2024 11:38:12 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=mJLhydL7; spf=pass (imf27.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.151 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1724845005; 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=M9H3cmWIhxcYHesHqGjL9yLjjaE0Sjuz4VP0wEL0R1w=; b=CP9NPC7Yq6N9R9yuuijm8AI2Llf4UHXfZ7KpBYHBnXtxIzFH+Y6Ehvrh8Dkbg3Pk3rCQJ6 40Jj4ZEGtIJUAiUHTK+qimVTcbqtjk52Zpl/2AaKqTP1m75hY3QQtznpV+R5OgY4yeZT87 +Quo2aTH72cki/p2sXqCpMsuL8ZX6s4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724845005; a=rsa-sha256; cv=none; b=NqdQdtgfYLOjnHf+9quKA7sKkDBQCM076ZXSmaSXsIOMrxRUd72CIsk2kYTzj6uZUu4/2v +gQnMAbPLQduFjgfHldtEKhAgmcHHQpVOOZWERKtvhAjfBuNKsZHH9AyTwz7SP/Lnnz6lE dlNinevTFlkVG1GJTaSoLUVNKYrLf8g= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=pankajraghav.com header.s=MBO0001 header.b=mJLhydL7; spf=pass (imf27.hostedemail.com: domain of kernel@pankajraghav.com designates 80.241.56.151 as permitted sender) smtp.mailfrom=kernel@pankajraghav.com; dmarc=pass (policy=quarantine) header.from=pankajraghav.com Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4Wv2Tr0lJSz9smc; Wed, 28 Aug 2024 13:38:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pankajraghav.com; s=MBO0001; t=1724845088; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=M9H3cmWIhxcYHesHqGjL9yLjjaE0Sjuz4VP0wEL0R1w=; b=mJLhydL76GrRuW737D6RbtsIACkQniYpae63FPhyPs9Pee+QHLNrfzj/Dn6gSl2+qVcAck MVhc292Hk0qoYqRGPD9zpnjIJaX8d5O1yrEGSsYMHhB1+EF4LynKehX/Qv4NwsOAORThkP k5bWZcHdv0PyZBZcaqlBvqgtANUpntIsXofOCzDNTvyXHhr67zhJgWGQGo5atd0XckJdjA rR8WlNWo6KNpCx03tSIETgCaJaWlHH6X25OSelFFa9ulW6U63lsK1ZpkkPI1xPEYndn84+ YFzGD2FOYgW6xaGMmQg8fuRa8gQKRsMbN/YCojlBlhbfJL6rkfQG9gO0UIpgVg== Date: Wed, 28 Aug 2024 11:38:02 +0000 From: "Pankaj Raghav (Samsung)" To: David Howells Cc: Christian Brauner , Steve French , Pankaj Raghav , Paulo Alcantara , Jeff Layton , Matthew Wilcox , netfs@lists.linux.dev, linux-afs@lists.infradead.org, linux-cifs@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, v9fs@lists.linux.dev, linux-erofs@lists.ozlabs.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Marc Dionne Subject: Re: [PATCH 1/9] mm: Fix missing folio invalidation calls during truncation Message-ID: <20240828113802.xw5wzlq2hxrquclb@quentin> References: <20240823200819.532106-1-dhowells@redhat.com> <20240823200819.532106-2-dhowells@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240823200819.532106-2-dhowells@redhat.com> X-Stat-Signature: c1mon9bbfoaa9mmzdpnrdxf8bgt9chc5 X-Rspamd-Queue-Id: 3181A40008 X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1724845092-180625 X-HE-Meta: U2FsdGVkX18APvlgvKDIjO0nOUeyO+cxQfFPrZxIHIWdCe74Z30J5YIx38qQUgy3SAAEWqyN8oUzsrRoHlVnFC5PK33lS0ySU/O5J9ZWEs+QKxvudaQlP2hJgIsju+luQMwrsrfABcNBo5niw9Xsyzh5WUrU29+OQJ710XoH+hW1V2ksO5QfO8yqCC6+d+4wsE5epiBs+xAJkHQHFfzMY1lpufI7/BlINK2njD+WdDq140Ysf+b6FE81wZ5HZN5fFA6hVWjbPY4bMnUxkXo37m7ORWpONzfUkkCHXRBDQFVP4t2CDm3pd+5Gw2P1gIwKmOFKoUSOVpzB9tW4wNMKw3A6wmlKQCPQNiy2n/UtoPyPK6Yf3eiUkOBH9ZiwCAE3pX15tGLYWBOdhYr60rXWMY5/TsN86H/pVWaTRKpGcOr9wLGb4DPTj9zf3pvCgsj0hCiZ9v1o+PFqiKjFFiHT4V3Rcigq0orE9BuuCQGzOsmVUTFkZQ96dIHDK1LK2YfBfqt14qnbrXF0qx2h2jTcor3NIpDAouZh4H/BM9u5CrQHWtnlU9W1RZ3+rePmWBnw/mo/q161Tw4TBZKeDzs15C6fvmZMBcqZaccqFplny+Eo26rDQJ0mqeF4Vswmla/jivulOQL/issildvB7bCP9wCn0UoO2UbMgkr1aLGAchnpYEA5CLnr8PDpPG+dbWhbacIUILV76qYqy+EiA/ygvcGpVTsSF+yW1OJFiDCG/vRdm94EyDUYEYf/LpTuf3ohM6+j4luFWG7A5yacNishYg3tu4Ib+IZAaQVes1l8y7+GC1llIJtV2lKSAlEk7WA+hPP6Q5hRU0K+U/YufzKaVAn5gl+rLRdgjG6PnQ6Z3JZT7KoG179OD2BhRYV+s6xWYs+bi/07Y8Lv5DL6jmDtxxEi3H2cawaVysZ7+PsvRCvgFQr3xs5jEP2PbKUDh64JM93JK/ud5VUu/AGs3h+ jlI1BPlS VwsfpJIG/hxvte/LOaGJESqZ56sq1HT8IOePLQ4HI0cHhFGdvT+C6spRcHoNAK7r7DyNS+S0vw5ZR0+hN8rXGxgJx8tZlvkjNwRxVgVrUgUgzVtLISF+HfHrxOF0Xao3ib/9X4VezOXP89HETUfi6cSg8o3llrf1c5i/F6QmkT62FJ/znxGOKeIAVG25tkL1nGCx5DZ2BAUSuqSKpkuA9/P/O95m8g7ABQGqFYGlM4EixcZR/Vwofa+ZfViWm5sKsAAughRkIELfpxQXP9rfxdV+AF4GxCmDwnasVYy4P2OlJAaoGuN3cyCZlA3gawkmN64zGBprks4bQ4cK8S+A5yfyDssYq4ZIW9W45YE3iyt8tSV3SFZkCjcdigG56ozR79XJAU1RKhGOR6GCNKbOY5g9oYGoVkPQiBrI/jvHaKKl0PUrKgcn/aoYDRxNAEybmkg3DmBu38aCsi86+20A35odvh/+ce2Ow9eBsTHhL81KENX+9dyS+ttnn2Wph/FbA8f4qdVGwJ9CfJ/MhMUB84d2TmRG3A2cNbOYO8QFJHNlC5rFb2b9OhA7xVLPtPCb1gC1VaLQ9HD9p/BcMrr+iSRc7hg== 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 Fri, Aug 23, 2024 at 09:08:09PM +0100, David Howells wrote: > When AS_RELEASE_ALWAYS is set on a mapping, the ->release_folio() and > ->invalidate_folio() calls should be invoked even if PG_private and > PG_private_2 aren't set. This is used by netfslib to keep track of the Should we update the comment in pagemap? diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 55b254d951da..18dd6174e6cc 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -204,7 +204,8 @@ enum mapping_flags { AS_EXITING = 4, /* final truncate in progress */ /* writeback related tags are not used */ AS_NO_WRITEBACK_TAGS = 5, - AS_RELEASE_ALWAYS = 6, /* Call ->release_folio(), even if no private data */ + AS_RELEASE_ALWAYS = 6, /* Call ->release_folio() and ->invalidate_folio, + even if no private data */ AS_STABLE_WRITES = 7, /* must wait for writeback before modifying folio contents */ AS_INACCESSIBLE = 8, /* Do not attempt direct R/W access to the mapping */ > point above which reads can be skipped in favour of just zeroing pagecache > locally. > > There are a couple of places in truncation in which invalidation is only > called when folio_has_private() is true. Fix these to check > folio_needs_release() instead. > > Without this, the generic/075 and generic/112 xfstests (both fsx-based > tests) fail with minimum folio size patches applied[1]. > > Fixes: b4fa966f03b7 ("mm, netfs, fscache: stop read optimisation when folio removed from pagecache") > Signed-off-by: David Howells > cc: Matthew Wilcox (Oracle) > cc: Pankaj Raghav > cc: Jeff Layton > cc: Marc Dionne > cc: linux-afs@lists.infradead.org > cc: netfs@lists.linux.dev > cc: linux-mm@kvack.org > cc: linux-fsdevel@vger.kernel.org > Link: https://lore.kernel.org/r/20240815090849.972355-1-kernel@pankajraghav.com/ [1] > --- > mm/truncate.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/mm/truncate.c b/mm/truncate.c > index 4d61fbdd4b2f..0668cd340a46 100644 > --- a/mm/truncate.c > +++ b/mm/truncate.c > @@ -157,7 +157,7 @@ static void truncate_cleanup_folio(struct folio *folio) > if (folio_mapped(folio)) > unmap_mapping_folio(folio); > > - if (folio_has_private(folio)) > + if (folio_needs_release(folio)) > folio_invalidate(folio, 0, folio_size(folio)); > > /* > @@ -219,7 +219,7 @@ bool truncate_inode_partial_folio(struct folio *folio, loff_t start, loff_t end) > if (!mapping_inaccessible(folio->mapping)) > folio_zero_range(folio, offset, length); > > - if (folio_has_private(folio)) > + if (folio_needs_release(folio)) > folio_invalidate(folio, offset, length); > if (!folio_test_large(folio)) > return true; > -- Pankaj Raghav