From nobody Tue Feb 10 13:01:47 2026 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 36A122C0270 for ; Sun, 4 Jan 2026 05:42:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767505324; cv=none; b=bhhbkiQkCKb036c2+mdDCINC3OtXesOpwDl7CqYZacFkhfR8z+ucZW+jDB6R6lt3Geq7//umGrNQajtKwXtOclnuFvGeY4iANNyh8+jj189AcLdTMSYmsFV1cC8ewMQryc0o+IwhZgzi76FzImLUSOH4MvJ36E8c97m8O5uegEU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767505324; c=relaxed/simple; bh=2gLwmmyo9Nd+x57pM8mh0o0Nhyq+PXJVQ5Nuw1iQFkE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TepezVlkyroo1ig1OoL8q4pLtCjyVFGeqXO55fZctY6+3SoiZI38Q3Wn7usZuw/pfdEdCD+4B7MfK9uiTUVSRvnTXMlV0DuJRrPGWStPF0BjGjDzVXJ0oe+RIx2gYt9zlfqMXjYmYBN9mDBwLrLi4iUdEOqZNlXpizjqvykQD8A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BXEkNz63; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BXEkNz63" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7b9215e55e6so7984475b3a.2 for ; Sat, 03 Jan 2026 21:42:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767505322; x=1768110122; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=a0Qdf4zMNC4D7WMZX9lJ+qvZLPu8CeBhQKpS69vVnOI=; b=BXEkNz63bg1EzRIxFgn3S7U4rimMsJgIKInbjweLnThx4JVx2KaWb/ln6vH74+7PeJ h6Zg+QRf8u+0B4VLtmTdhar9Ev5nHzF4/oo1a2sBHjuo258Ql1PYSOtjqc/gESDXovjB h5JFHWcdZ8Iad6KiZJSaZVqzP+kyTb6By3VPSRPz6c0g0X00TYa5insGVwj0f12+zjbP URm2Sy4Cn4Ro4m/AUhIiuc0VqNYVFz751jwPhxi3FjMZzZgpT4e5CQ/ISo18fdlZMMD6 I7bHcYo+CPFbgGLXo9vgTZmNw7+VGtEjCI8EnQ484FdWd7IKIaG7Z83pSE/nOe3N3A8z idiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767505322; x=1768110122; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=a0Qdf4zMNC4D7WMZX9lJ+qvZLPu8CeBhQKpS69vVnOI=; b=Q64ExeB5DSD+Zu8tGSCyD98r/gw910Fs5s5U+YqE1UdSyXOEGrIqF4kIT/DbzEc7Ux t2S4wnJm+h6VVFZYN7jATpg2zJHwBpHL2PbbGTjtSZWYL/eVOS6OrVKM/erl/HBOMDFt FzFqUMIPEbzOuVHpejJxvE6fcX7wgNe8NvpNPc/9guuldOZQ2IIphTxbme4SGH6GO/AW odatTT3FjBmEQAe+4mFnF1usvTX40+on0LuwLX+jUiNrp7GMZVy4rROIPuaxotdPKnKQ LR2bRZ8BbMVPiOrlVyvjM7EjzUSeFThZgs0GNgBNcUynYjWVA8N3e3mVysoxLBFK6OVR qwLg== X-Forwarded-Encrypted: i=1; AJvYcCVwzsVfFhAsNyJza2X3r/gLHjQIQIsW0uVb1AdXp4TtrNzTurpUu+cjRFLzIlGSrr3lse8nyP1zGlnkZuU=@vger.kernel.org X-Gm-Message-State: AOJu0Yzv+JthAEJ8akxq4AYwNxFvXLXMvglykU3Dbj6agsBhH5LvwcRs UisKSxVCAHXLpdXSu2DduZyiobJx1hQrRnY775P/JJyFmbppAkIfmXDk X-Gm-Gg: AY/fxX7Ehy7MigFsSMguBhVwXwjYTem8JwPfynzuwFbtappXR7WYSnWUu5fRwS6l7U/ OVBxOyobAgoOZJhHWec6ZUmybwFE+nzTGNSEQC2SPyro8+WSEd7h2Ovu1WnxTx2twC4fgrN/Asb UrgGN/DfRBv9VvDJYqCx/CxOUtuyBrxRqLOT6lSra74ULh5/zJudcJB65qcDEUzBRV4CQY2Kzz+ SRI7eRo6+8iJGUb/aFyAPoIrWasIyR6spneht79BltAtUol5pr4IWsIzDmqMbwRAIf58hvMD/pR vtEvG0w67f8bvf63ce0rGppmH7eId+QaYixW/Nt1kHjjW0TvDkuRKLGuwuGBqh3dxWsXt3NH8nA WeIUFgM9G+0v5LP3tkdoTSG7xFZyjwFkTry9Z0LzIIx9UXYkPUYb16050jkoqsuKp3jgyrzBAkx AMW1TfvDJCbxtNgHNZwt8n3qc4pQCD X-Google-Smtp-Source: AGHT+IFirQNJJjZbxgLMgoG5jja4E2rvCFQkOAek5C12Sly8D8X+LIOspm5GGHAV1I80LaxS1ZUgvQ== X-Received: by 2002:a05:6a00:1c81:b0:7e8:4587:e8c5 with SMTP id d2e1a72fcca58-7ff664807c4mr40316534b3a.56.1767505322454; Sat, 03 Jan 2026 21:42:02 -0800 (PST) Received: from localhost.localdomain ([121.232.80.251]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7ff7b31c479sm44378305b3a.24.2026.01.03.21.41.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Jan 2026 21:42:01 -0800 (PST) From: Vernon Yang X-Google-Original-From: Vernon Yang To: akpm@linux-foundation.org, david@kernel.org Cc: lorenzo.stoakes@oracle.com, ziy@nvidia.com, dev.jain@arm.com, baohua@kernel.org, lance.yang@linux.dev, richard.weiyang@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Vernon Yang Subject: [PATCH v3 4/6] mm: add folio_is_lazyfree helper Date: Sun, 4 Jan 2026 13:41:10 +0800 Message-ID: <20260104054112.4541-5-yanglincheng@kylinos.cn> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260104054112.4541-1-yanglincheng@kylinos.cn> References: <20260104054112.4541-1-yanglincheng@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add folio_is_lazyfree() function to identify lazy-free folios to improve code readability. Signed-off-by: Vernon Yang --- include/linux/mm_inline.h | 5 +++++ mm/rmap.c | 4 ++-- mm/vmscan.c | 5 ++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index fa2d6ba811b5..65a4ae52d915 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -35,6 +35,11 @@ static inline int page_is_file_lru(struct page *page) return folio_is_file_lru(page_folio(page)); } =20 +static inline int folio_is_lazyfree(const struct folio *folio) +{ + return folio_test_anon(folio) && !folio_test_swapbacked(folio); +} + static __always_inline void __update_lru_size(struct lruvec *lruvec, enum lru_list lru, enum zone_type zid, long nr_pages) diff --git a/mm/rmap.c b/mm/rmap.c index f955f02d570e..7241a3fa8574 100644 --- a/mm/rmap.c +++ b/mm/rmap.c @@ -1838,7 +1838,7 @@ static inline unsigned int folio_unmap_pte_batch(stru= ct folio *folio, max_nr =3D (end_addr - addr) >> PAGE_SHIFT; =20 /* We only support lazyfree batching for now ... */ - if (!folio_test_anon(folio) || folio_test_swapbacked(folio)) + if (!folio_is_lazyfree(folio)) return 1; if (pte_unused(pte)) return 1; @@ -1934,7 +1934,7 @@ static bool try_to_unmap_one(struct folio *folio, str= uct vm_area_struct *vma, } =20 if (!pvmw.pte) { - if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) { + if (folio_is_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 670fe9fae5ba..f357f74b5a35 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -963,8 +963,7 @@ static void folio_check_dirty_writeback(struct folio *f= olio, * 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_is_lazyfree(folio)) { *dirty =3D false; *writeback =3D false; return; @@ -1501,7 +1500,7 @@ static unsigned int shrink_folio_list(struct list_hea= d *folio_list, } } =20 - if (folio_test_anon(folio) && !folio_test_swapbacked(folio)) { + if (folio_is_lazyfree(folio)) { /* follow __remove_mapping for reference */ if (!folio_ref_freeze(folio, 1)) goto keep_locked; --=20 2.51.0