From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 696CE22D78A for ; Fri, 23 Jan 2026 10:54:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769165661; cv=none; b=JYVYuWKBj1YZuF6TxOMGWiKnqGiZJkfiab2/JYNfGwA3dmvwaUlm8oI+/19fUladsFk9p6kkdsPclnsV1riP1EWNmJue7/fVEa8gDCRuPBN2iq9aevfDASQya3fYMFss3bwSjUTfq19hzoWJQLgALO82W2X58b8uTtL+KZuZ7ok= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769165661; c=relaxed/simple; bh=Q+RZkzNAGrymOrZRcU+RzqXu5k9jM1HUVCUrutS+1r8=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=U6yfBBINbePRsppifP999ygk2alRVE+M3N56Gm217c4xopwFC075Zz818OUm38kfAWEAUW0aAJgIlKXcw9Wcvt+/nC90zgyNN60psS1SaeU+iSBvOmnbmdN/gOD26n8Ko8+tPdwXYkg2hnlMxh+C1xLaZxlQrumgMBd+OGnuyY0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 488661476; Fri, 23 Jan 2026 02:54:12 -0800 (PST) Received: from [10.164.136.38] (unknown [10.164.136.38]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8E8723F632; Fri, 23 Jan 2026 02:54:15 -0800 (PST) Message-ID: <152ccbbe-d32f-4842-9ea8-5476076c5abc@arm.com> Date: Fri, 23 Jan 2026 16:24:12 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH mm-new v5 3/5] mm: add folio_test_lazyfree helper To: Vernon Yang , akpm@linux-foundation.org, david@kernel.org Cc: lorenzo.stoakes@oracle.com, ziy@nvidia.com, baohua@kernel.org, lance.yang@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Vernon Yang References: <20260123082232.16413-1-vernon2gm@gmail.com> <20260123082232.16413-4-vernon2gm@gmail.com> Content-Language: en-US From: Dev Jain In-Reply-To: <20260123082232.16413-4-vernon2gm@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 23/01/26 1:52 pm, Vernon Yang wrote: > From: Vernon Yang > > Add folio_test_lazyfree() function to identify lazy-free folios to improve > code readability. > > Signed-off-by: Vernon Yang > Acked-by: David Hildenbrand (Red Hat) > Reviewed-by: Lance Yang Thanks, this is very useful. Reviewed-by: Dev Jain > --- > include/linux/page-flags.h | 5 +++++ > mm/rmap.c | 2 +- > mm/vmscan.c | 5 ++--- > 3 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h > index f7a0e4af0c73..415e9f2ef616 100644 > --- a/include/linux/page-flags.h > +++ b/include/linux/page-flags.h > @@ -724,6 +724,11 @@ static __always_inline bool folio_test_anon(const struct folio *folio) > return ((unsigned long)folio->mapping & FOLIO_MAPPING_ANON) != 0; > } > > +static __always_inline bool folio_test_lazyfree(const struct folio *folio) > +{ > + return folio_test_anon(folio) && !folio_test_swapbacked(folio); > +} > + > static __always_inline bool PageAnonNotKsm(const struct page *page) > { > unsigned long flags = (unsigned long)page_folio(page)->mapping; > diff --git a/mm/rmap.c b/mm/rmap.c > index 088723f909e4..6b09be06c707 100644 > --- a/mm/rmap.c > +++ b/mm/rmap.c > @@ -2049,7 +2049,7 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma, > } > > if (!pvmw.pte) { > - if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) { > + if (folio_test_lazyfree(folio)) { > if (unmap_huge_pmd_locked(vma, pvmw.address, pvmw.pmd, folio)) > goto walk_done; > /* > diff --git a/mm/vmscan.c b/mm/vmscan.c > index 8643c0fb9162..1f32c74ec738 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -944,8 +944,7 @@ static void folio_check_dirty_writeback(struct folio *folio, > * They could be mistakenly treated as file lru. So further anon > * test is needed. > */ > - if (!folio_is_file_lru(folio) || > - (folio_test_anon(folio) && !folio_test_swapbacked(folio))) { > + if (!folio_is_file_lru(folio) || folio_test_lazyfree(folio)) { > *dirty = false; > *writeback = false; > return; > @@ -1489,7 +1488,7 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, > } > } > > - if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) { > + if (folio_test_lazyfree(folio)) { > /* follow __remove_mapping for reference */ > if (!folio_ref_freeze(folio, 1)) > goto keep_locked;