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 2C267C48BC3 for ; Mon, 19 Feb 2024 21:59:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 806496B0074; Mon, 19 Feb 2024 16:59:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7B5856B0078; Mon, 19 Feb 2024 16:59:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 656836B007B; Mon, 19 Feb 2024 16:59:51 -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 50B946B0074 for ; Mon, 19 Feb 2024 16:59:51 -0500 (EST) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id C3F221601BC for ; Mon, 19 Feb 2024 21:59:50 +0000 (UTC) X-FDA: 81809921340.12.D47FF51 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf06.hostedemail.com (Postfix) with ESMTP id B15DE180005 for ; Mon, 19 Feb 2024 21:59:46 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="lVHIEp/F"; spf=none (imf06.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1708379989; 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=K2GkkLWcaTZiEwgJGpc85AFlW9W2WYYv1dUrluxHJ0M=; b=gHAUg/bpeMN+Wt9istyJckGXDOOZ9IY2F1Qud/6F7LehhKMqXGRndIv6CdZG+KMaqzO2ka hxyMfx4FFy2V7mvm0PriG6d4xqksLicI3mslsixr6sSbuMRguvmU1CAsJYuqhHamRsqwqO R8vMufBdrMhIxulOH+aMrh/IJVZKKKg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1708379989; a=rsa-sha256; cv=none; b=1SH+EvZb/P/XLcWRgfHXGpMFVIO+Ee2tUlr8e0Lt26mH7Ud7x0EkgzlnstSeW/GI+Wzy9/ goFKWxtNz3DVQXVbSTT47kx9HTkJIUxil6ZjJe9zHGnTNftDvPb8WWpWAoKRyuYeCafEEs ynlh/J0ULuZ6chnHET0rfCRyxZMYZ9A= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b="lVHIEp/F"; spf=none (imf06.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=K2GkkLWcaTZiEwgJGpc85AFlW9W2WYYv1dUrluxHJ0M=; b=lVHIEp/F54OwQpRnhkvh9dzFqV UzpckeFO+1RtWwRsma+TrglWE50CDbcvKo2dvthWBA4T8kYIRivCrIAOtntfwzMeu5IFYsFmGmxpn C+qH2Jz3zr19XcatGKmY8GUmruFQWDhB5tYnfiQhfgqvoTFejZCaVXwbXo6j3KeHZVCzo1dfmQny9 7A7k0QPBi1UAtdU9edNlNnumZ40/c1VwfoyvIOiAOt4nOyPmXqCLBzWTZ8ce7/7qhNgYtT1SC/bwN 2WZ7anrmga+bgUK6zP/iTWvqVBhKxnqn+o/x3wKLccbNgX3VvOjeqGV10yIuC6dDXErlRiby7H4kB pWnlATDA==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1rcBfs-0000000DtEL-0RRy; Mon, 19 Feb 2024 21:59:44 +0000 Date: Mon, 19 Feb 2024 21:59:44 +0000 From: Matthew Wilcox To: Linus Torvalds Cc: Andrew Morton , Jens Axboe , Jan Kara , Linux-MM , Vishal Moola Subject: Re: [patch 041/178] mm: provide filemap_range_needs_writeback() helper Message-ID: References: <20210429225251.02b6386d21b69255b4f6c163@linux-foundation.org> <20210430055518.KCtlWixJr%akpm@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: B15DE180005 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 1z7tdprnoyo7yu3rbej3ftcpop7m566f X-HE-Tag: 1708379986-133518 X-HE-Meta: U2FsdGVkX1+2UjeoMhzsr+JdEJ/cnyMTy8uUt/IMtynwpt5RjECj0zH1L8IzdZa1xCBgVjWYf3GtBnns5WDrKS8ulhSnhe44vfQt9Nk4mSrWCkTo3EU97Vn/H6Ktae8/oTyyP8l2tWjLLmPyqtgQ7eOT5wwMRAehAvFV9Mp+v7qtsNF68mxyqxlP2l2cVjYtGMXxz762+zUo0IUhV1dahPMHkXE+5wl40qcysTLGBQ/MIcIOJn+dqHpB801WJinAW95xOY6aXCoQvqg/MuRFsJHOonzzQo7ry40klP1keXJrT6+fqmGKEoNLc/Y8of3lbA8ikfZpBVamwu9suszILHU0d3dbSqBbyEoa9infVu2FdA1Sk/ztfOb04JoOY/QFwOLi2gJoeMOubIsOHOxCy0u/lLZoOYO+6WyaMttb9kXDisDwIfNZrtG02Mh2fuNXaV4DE0F2RkxoW/a41YGb0ZOyvAcz0Hj/FocLF5Pj5SrQFkOeYUepDc1RUnju41wLLaimBIRN8fCU1A9CbyC8uDjJUh3qhPzidZNRLbPy4cty6mh3gjiAdaziGX7FdfDojPd4fCNx6+V9f+7vAXw0UA6SfInf40lgCGCiNeMjwuJZfFr3NxzNtrBVstzDOnrt0OicBUwAmpYD4L/bVKVy9Ey4u8yIjo94G8yo6wiR6Kur/NTk+JekN3Dod2V0a54NJ2rBCxGhDZ8RujDxsyWldXYURpQeuw5yNPJnYjhcgOPT7hWafCjfZ6H/VSpKE7XLCFfbFB/yEJqqnMFxBb7AZ4K1KYobDHcbl+vkQHlc/JjzSlCmkb/v+CFLhTdfVwwRnAW9BzHQkWT10yo2AW4sSLDpIZZtIm3P7jC2GKWM5Hfwr3tFIGcmHaoY1IJXa3npV6ltWep8yOMq0TvDVdTXD+vidb3gL5L+wPJ/TV6eg6Uqa/au11Bs72ChU6MEtUGwGTkUF2Qj6/6pv6aCJll KmRvvmHM 8ci8vVyRK/CWRM30ZFJZ0NKS5iGhVhd2wzi8q5lznsP0EvH2Xe+QXwVhHB/jQWZsaj6FxQwLBE4b6xECcP9c7yGEIc2ZVksrP8p87zkQZaAE39FP2Un5bmMNT4fpJwjwoJrEWD4CKFAz0lq4tSXHPwdtk0vkG5ozbnjaT5Iq1/v5g+zUlnZQrM9k50BO82r4YSMuCmBRpi5nbRPcua/bIH4cXQhCTvIDphejvA1Z7Xk0t4AO9J3xNOSGsKu0lsVgpKq/9QeN+XVc1u1QVFe0oO8KTylFVHVGY4vzDdaSZ4Ji1JKDHX/TZxuD+pw== 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 Sun, May 09, 2021 at 08:40:25PM +0100, Matthew Wilcox wrote: > On Fri, Apr 30, 2021 at 09:50:29AM -0700, Linus Torvalds wrote: > > On Thu, Apr 29, 2021 at 10:55 PM Andrew Morton > > wrote: > > > + rcu_read_lock(); > > > + xas_for_each(&xas, page, max) { > > > + if (xas_retry(&xas, page)) > > > + continue; > > > + if (xa_is_value(page)) > > > + continue; > > > + if (PageDirty(page) || PageLocked(page) || PageWriteback(page)) > > > + break; > > > + } > > > + rcu_read_unlock(); > > > > Whee. This looks very very expensive indeed. > > > > Why is is going to each page, why does it care about locked when the > > simple early cases did not? > > I was hoping Jens would answer this, but I guess he missed it so far. > I don't know why it now cares about whether the page is locked or not. > I presume it's not even the slightest bit slow for Jens because the > common case is that there are no pages in the range, and so we never > check any pages. Looking at this again, since the change to operate on folios, we're now living dangerously as we don't have a reference on the folio, so it can now be freed, turned into a tail page and trigger the VM_BUG_ON_PGFLAGS() in folio_flags(). Rather than take a refcount on the folio to prevent that from happening, we can just examine the pagecache flags in the XArray. like this. Assuming there really isn't a need to check the locked flag (which for obvious reasons we don't mirror into the xarray marks). Jens, WDYT? diff --git a/mm/filemap.c b/mm/filemap.c index 750e779c23db..09f3851157f9 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -640,10 +640,8 @@ bool filemap_range_has_writeback(struct address_space *mapping, xas_for_each(&xas, folio, max) { if (xas_retry(&xas, folio)) continue; - if (xa_is_value(folio)) - continue; - if (folio_test_dirty(folio) || folio_test_locked(folio) || - folio_test_writeback(folio)) + if (xas_get_mark(&xas, PAGECACHE_TAG_DIRTY) || + xas_get_mark(&xas, PAGECACHE_TAG_WRITEBACK)) break; } rcu_read_unlock();