From nobody Mon Feb 9 15:50:32 2026 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2475C4332F for ; Wed, 21 Dec 2022 00:13:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234167AbiLUANA (ORCPT ); Tue, 20 Dec 2022 19:13:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234214AbiLUAMn (ORCPT ); Tue, 20 Dec 2022 19:12:43 -0500 Received: from mail-il1-x14a.google.com (mail-il1-x14a.google.com [IPv6:2607:f8b0:4864:20::14a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3F30F201BC for ; Tue, 20 Dec 2022 16:12:37 -0800 (PST) Received: by mail-il1-x14a.google.com with SMTP id x10-20020a056e021bca00b00302b6c0a683so9332672ilv.23 for ; Tue, 20 Dec 2022 16:12:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=x7hqwzZvz2lgYCROSGHPyAOjnAXLbIm00pvWJTo+FHY=; b=Y99krAxU+g6T25oGmPipeCWre53NFTuJA+DF0scSa6pVzx7mXz7QcRs4zj3Vl9HPUP tRBIUnIfjLKRhffplM9obWzr4hel+aA8KfE7YGeKIyJFgO8ieeYe689GCoDHNY2gpMbi zM4b5sdTiFZxfWyeTTDtHmyZ3KxDS29e9pBwXEAyARnePnRmobGsBdEh1yOqIqhgKc1a A6uogABkcc5cE5LeJndJvYQP3gvIMBmlhEP3b2yEq96hHoG+8AgIbcjB5BTclwI/Qy2B Dq4+gEK53lcx/Q8/KoZGnlUM5QopFlIwhp4GhqYF6UK/aB/azCbUMD3B1AEeV7oLuxja Qnrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=x7hqwzZvz2lgYCROSGHPyAOjnAXLbIm00pvWJTo+FHY=; b=jdRFiu1H9qtX1wvK/jMFlNzumtum9oaDJrCHFldmiIz6eAWdGC2E62NR/8Jj/1rIWy cAzNK/mALBwruMpcU4D05tECYeXkVqzfY6pgmnY69GdH6G0H4uvadZWYTs6IyWLYzkAj pcsIyLsQSISv+m+aWdT+oS3ztGCa5PMKe/UwraXqHR5kAQIchKaWE4cTuo0voVKdbcCB 43laTr7OMnLepggE0sOxZjIQ+tbUr3OAhTBCOYdHC8Xs+GW/uoKQ21JB7denOgUmYBxB UMvXEBJ2FuA2uo+gTH/WZEZiEP0yf5wQ/ZTgiDcA4mSrqOuhGxMUMAxO0AHz9T3xrEke V+JQ== X-Gm-Message-State: ANoB5pkyGLzyRU4MCxXdMyWsC+m2qUybfLGDq4EV+lHAG6E2mKQq854J rmz/pAEByaeGXGGIEyfGWtzT8VM57EQ= X-Google-Smtp-Source: AA0mqf6uw7KuVqvxq95bcw+r3WruBA/v608j3gUgEyvlJRm3jjlnvNsHzE5a8wwOhKy0j7TuaZOuPLg+a5E= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:a589:30f2:2daa:4ab7]) (user=yuzhao job=sendgmr) by 2002:a02:b01d:0:b0:38a:3421:be23 with SMTP id p29-20020a02b01d000000b0038a3421be23mr14395612jah.288.1671581556605; Tue, 20 Dec 2022 16:12:36 -0800 (PST) Date: Tue, 20 Dec 2022 17:12:01 -0700 In-Reply-To: <20221221001207.1376119-1-yuzhao@google.com> Message-Id: <20221221001207.1376119-2-yuzhao@google.com> Mime-Version: 1.0 References: <20221221001207.1376119-1-yuzhao@google.com> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Subject: [PATCH mm-unstable v2 1/8] mm: multi-gen LRU: rename lru_gen_struct to lru_gen_folio From: Yu Zhao To: Andrew Morton Cc: Johannes Weiner , Jonathan Corbet , Michael Larabel , Michal Hocko , Mike Rapoport , Roman Gushchin , Suren Baghdasaryan , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-mm@google.com, Yu Zhao Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The new name lru_gen_folio will be more distinct from the coming lru_gen_memcg. Signed-off-by: Yu Zhao Change-Id: Ic714d328df239f569fe37c3f1fac44a01549883c --- include/linux/mm_inline.h | 4 ++-- include/linux/mmzone.h | 6 +++--- mm/vmscan.c | 34 +++++++++++++++++----------------- mm/workingset.c | 4 ++-- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index e8ed225d8f7c..f63968bd7de5 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h @@ -178,7 +178,7 @@ static inline void lru_gen_update_size(struct lruvec *l= ruvec, struct folio *foli int zone =3D folio_zonenum(folio); int delta =3D folio_nr_pages(folio); enum lru_list lru =3D type * LRU_INACTIVE_FILE; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 VM_WARN_ON_ONCE(old_gen !=3D -1 && old_gen >=3D MAX_NR_GENS); VM_WARN_ON_ONCE(new_gen !=3D -1 && new_gen >=3D MAX_NR_GENS); @@ -224,7 +224,7 @@ static inline bool lru_gen_add_folio(struct lruvec *lru= vec, struct folio *folio, int gen =3D folio_lru_gen(folio); int type =3D folio_is_file_lru(folio); int zone =3D folio_zonenum(folio); - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 VM_WARN_ON_ONCE_FOLIO(gen !=3D -1, folio); =20 diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index cd28a100d9e4..1686fcc4ed01 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -404,7 +404,7 @@ enum { * The number of pages in each generation is eventually consistent and the= refore * can be transiently negative when reset_batch_size() is pending. */ -struct lru_gen_struct { +struct lru_gen_folio { /* the aging increments the youngest generation number */ unsigned long max_seq; /* the eviction increments the oldest generation numbers */ @@ -461,7 +461,7 @@ struct lru_gen_mm_state { struct lru_gen_mm_walk { /* the lruvec under reclaim */ struct lruvec *lruvec; - /* unstable max_seq from lru_gen_struct */ + /* unstable max_seq from lru_gen_folio */ unsigned long max_seq; /* the next address within an mm to scan */ unsigned long next_addr; @@ -524,7 +524,7 @@ struct lruvec { unsigned long flags; #ifdef CONFIG_LRU_GEN /* evictable pages divided into generations */ - struct lru_gen_struct lrugen; + struct lru_gen_folio lrugen; /* to concurrently iterate lru_gen_mm_list */ struct lru_gen_mm_state mm_state; #endif diff --git a/mm/vmscan.c b/mm/vmscan.c index 546540bc770a..c0c4b0cd2fe2 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3215,7 +3215,7 @@ static int get_nr_gens(struct lruvec *lruvec, int typ= e) =20 static bool __maybe_unused seq_is_valid(struct lruvec *lruvec) { - /* see the comment on lru_gen_struct */ + /* see the comment on lru_gen_folio */ return get_nr_gens(lruvec, LRU_GEN_FILE) >=3D MIN_NR_GENS && get_nr_gens(lruvec, LRU_GEN_FILE) <=3D get_nr_gens(lruvec, LRU_GEN= _ANON) && get_nr_gens(lruvec, LRU_GEN_ANON) <=3D MAX_NR_GENS; @@ -3612,7 +3612,7 @@ struct ctrl_pos { static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int g= ain, struct ctrl_pos *pos) { - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; int hist =3D lru_hist_from_seq(lrugen->min_seq[type]); =20 pos->refaulted =3D lrugen->avg_refaulted[type][tier] + @@ -3627,7 +3627,7 @@ static void read_ctrl_pos(struct lruvec *lruvec, int = type, int tier, int gain, static void reset_ctrl_pos(struct lruvec *lruvec, int type, bool carryover) { int hist, tier; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; bool clear =3D carryover ? NR_HIST_GENS =3D=3D 1 : NR_HIST_GENS > 1; unsigned long seq =3D carryover ? lrugen->min_seq[type] : lrugen->max_seq= + 1; =20 @@ -3704,7 +3704,7 @@ static int folio_update_gen(struct folio *folio, int = gen) static int folio_inc_gen(struct lruvec *lruvec, struct folio *folio, bool = reclaiming) { int type =3D folio_is_file_lru(folio); - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; int new_gen, old_gen =3D lru_gen_from_seq(lrugen->min_seq[type]); unsigned long new_flags, old_flags =3D READ_ONCE(folio->flags); =20 @@ -3749,7 +3749,7 @@ static void update_batch_size(struct lru_gen_mm_walk = *walk, struct folio *folio, static void reset_batch_size(struct lruvec *lruvec, struct lru_gen_mm_walk= *walk) { int gen, type, zone; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 walk->batched =3D 0; =20 @@ -4266,7 +4266,7 @@ static bool inc_min_seq(struct lruvec *lruvec, int ty= pe, bool can_swap) { int zone; int remaining =3D MAX_LRU_BATCH; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; int new_gen, old_gen =3D lru_gen_from_seq(lrugen->min_seq[type]); =20 if (type =3D=3D LRU_GEN_ANON && !can_swap) @@ -4302,7 +4302,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec,= bool can_swap) { int gen, type, zone; bool success =3D false; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; DEFINE_MIN_SEQ(lruvec); =20 VM_WARN_ON_ONCE(!seq_is_valid(lruvec)); @@ -4323,7 +4323,7 @@ static bool try_to_inc_min_seq(struct lruvec *lruvec,= bool can_swap) ; } =20 - /* see the comment on lru_gen_struct */ + /* see the comment on lru_gen_folio */ if (can_swap) { min_seq[LRU_GEN_ANON] =3D min(min_seq[LRU_GEN_ANON], min_seq[LRU_GEN_FIL= E]); min_seq[LRU_GEN_FILE] =3D max(min_seq[LRU_GEN_ANON], lrugen->min_seq[LRU= _GEN_FILE]); @@ -4345,7 +4345,7 @@ static void inc_max_seq(struct lruvec *lruvec, bool c= an_swap, bool force_scan) { int prev, next; int type, zone; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 spin_lock_irq(&lruvec->lru_lock); =20 @@ -4403,7 +4403,7 @@ static bool try_to_inc_max_seq(struct lruvec *lruvec,= unsigned long max_seq, bool success; struct lru_gen_mm_walk *walk; struct mm_struct *mm =3D NULL; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 VM_WARN_ON_ONCE(max_seq > READ_ONCE(lrugen->max_seq)); =20 @@ -4468,7 +4468,7 @@ static bool should_run_aging(struct lruvec *lruvec, u= nsigned long max_seq, unsig unsigned long old =3D 0; unsigned long young =3D 0; unsigned long total =3D 0; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; struct mem_cgroup *memcg =3D lruvec_memcg(lruvec); =20 for (type =3D !can_swap; type < ANON_AND_FILE; type++) { @@ -4753,7 +4753,7 @@ static bool sort_folio(struct lruvec *lruvec, struct = folio *folio, int tier_idx) int delta =3D folio_nr_pages(folio); int refs =3D folio_lru_refs(folio); int tier =3D lru_tier_from_refs(refs); - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 VM_WARN_ON_ONCE_FOLIO(gen >=3D MAX_NR_GENS, folio); =20 @@ -4853,7 +4853,7 @@ static int scan_folios(struct lruvec *lruvec, struct = scan_control *sc, int scanned =3D 0; int isolated =3D 0; int remaining =3D MAX_LRU_BATCH; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; struct mem_cgroup *memcg =3D lruvec_memcg(lruvec); =20 VM_WARN_ON_ONCE(!list_empty(list)); @@ -5254,7 +5254,7 @@ static void lru_gen_shrink_lruvec(struct lruvec *lruv= ec, struct scan_control *sc =20 static bool __maybe_unused state_is_valid(struct lruvec *lruvec) { - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 if (lrugen->enabled) { enum lru_list lru; @@ -5533,7 +5533,7 @@ static void lru_gen_seq_show_full(struct seq_file *m,= struct lruvec *lruvec, int i; int type, tier; int hist =3D lru_hist_from_seq(seq); - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 for (tier =3D 0; tier < MAX_NR_TIERS; tier++) { seq_printf(m, " %10d", tier); @@ -5583,7 +5583,7 @@ static int lru_gen_seq_show(struct seq_file *m, void = *v) unsigned long seq; bool full =3D !debugfs_real_fops(m->file)->write; struct lruvec *lruvec =3D v; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; int nid =3D lruvec_pgdat(lruvec)->node_id; struct mem_cgroup *memcg =3D lruvec_memcg(lruvec); DEFINE_MAX_SEQ(lruvec); @@ -5837,7 +5837,7 @@ void lru_gen_init_lruvec(struct lruvec *lruvec) { int i; int gen, type, zone; - struct lru_gen_struct *lrugen =3D &lruvec->lrugen; + struct lru_gen_folio *lrugen =3D &lruvec->lrugen; =20 lrugen->max_seq =3D MIN_NR_GENS + 1; lrugen->enabled =3D lru_gen_enabled(); diff --git a/mm/workingset.c b/mm/workingset.c index 1a86645b7b3c..fd666584515c 100644 --- a/mm/workingset.c +++ b/mm/workingset.c @@ -223,7 +223,7 @@ static void *lru_gen_eviction(struct folio *folio) unsigned long token; unsigned long min_seq; struct lruvec *lruvec; - struct lru_gen_struct *lrugen; + struct lru_gen_folio *lrugen; int type =3D folio_is_file_lru(folio); int delta =3D folio_nr_pages(folio); int refs =3D folio_lru_refs(folio); @@ -252,7 +252,7 @@ static void lru_gen_refault(struct folio *folio, void *= shadow) unsigned long token; unsigned long min_seq; struct lruvec *lruvec; - struct lru_gen_struct *lrugen; + struct lru_gen_folio *lrugen; struct mem_cgroup *memcg; struct pglist_data *pgdat; int type =3D folio_is_file_lru(folio); --=20 2.39.0.314.g84b9a713c41-goog