From: Shakeel Butt <shakeel.butt@linux.dev>
To: Klara Modin <klarasmodin@gmail.com>
Cc: Boris Burkov <boris@bur.io>,
akpm@linux-foundation.org, linux-btrfs@vger.kernel.org,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
kernel-team@fb.com, wqu@suse.com, willy@infradead.org,
mhocko@kernel.org, muchun.song@linux.dev,
roman.gushchin@linux.dev, hannes@cmpxchg.org
Subject: Re: [PATCH v3 1/4] mm/filemap: add AS_UNCHARGED
Date: Wed, 20 Aug 2025 15:22:21 -0700 [thread overview]
Message-ID: <hdxyep67zjudwbawdyasxhe4xeu7ckua35wo7whwy3zkjaa5ie@tibviq22ndhf> (raw)
In-Reply-To: <hbdekl37pkdsvdvzgsz5prg5nlmyr67zrkqgucq3gdtepqjilh@ovc6untybhbg>
On Thu, Aug 21, 2025 at 12:06:42AM +0200, Klara Modin wrote:
[...]
>
> The following diff resolves the issue for me:
>
> diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
> index fae105a9cb46..c70e789201fc 100644
> --- a/include/linux/memcontrol.h
> +++ b/include/linux/memcontrol.h
> @@ -809,7 +809,7 @@ void mem_cgroup_scan_tasks(struct mem_cgroup *memcg,
>
> static inline unsigned short mem_cgroup_id(struct mem_cgroup *memcg)
> {
> - if (mem_cgroup_disabled())
> + if (mem_cgroup_disabled() || !memcg)
> return 0;
>
> return memcg->id.id;
>
> However, it's mentioned in folio_memcg() that it can return NULL so this
> might be an existing bug which this patch just makes more obvious.
>
> There's also workingset_eviction() which instead gets the memcg from
> lruvec. Doing that in lru_gen_eviction() also resolves the issue for me:
>
> diff --git a/mm/workingset.c b/mm/workingset.c
> index 68a76a91111f..e805eadf0ec7 100644
> --- a/mm/workingset.c
> +++ b/mm/workingset.c
> @@ -243,6 +243,7 @@ static void *lru_gen_eviction(struct folio *folio)
> int tier = lru_tier_from_refs(refs, workingset);
> struct mem_cgroup *memcg = folio_memcg(folio);
> struct pglist_data *pgdat = folio_pgdat(folio);
> + int memcgid;
>
> BUILD_BUG_ON(LRU_GEN_WIDTH + LRU_REFS_WIDTH > BITS_PER_LONG - EVICTION_SHIFT);
>
> @@ -254,7 +255,9 @@ static void *lru_gen_eviction(struct folio *folio)
> hist = lru_hist_from_seq(min_seq);
> atomic_long_add(delta, &lrugen->evicted[hist][type][tier]);
>
> - return pack_shadow(mem_cgroup_id(memcg), pgdat, token, workingset);
> + memcgid = mem_cgroup_id(lruvec_memcg(lruvec));
> +
> + return pack_shadow(memcgid, pgdat, token, workingset);
> }
>
> /*
>
> I don't really know what I'm doing here, though.
Thanks a lot for the report and I think we will prefer your second
approach which makes lru_gen_eviction() similar to
workingset_eviction(). Can you please send a formal patch and Boris can
add that patch in his series?
next prev parent reply other threads:[~2025-08-20 22:22 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-19 0:36 [PATCH v3 0/4] introduce uncharged file mapped folios Boris Burkov
2025-08-19 0:36 ` [PATCH v3 1/4] mm/filemap: add AS_UNCHARGED Boris Burkov
2025-08-19 2:46 ` Matthew Wilcox
2025-08-19 3:57 ` Boris Burkov
2025-08-20 22:06 ` Klara Modin
2025-08-20 22:22 ` Shakeel Butt [this message]
2025-08-20 22:52 ` Boris Burkov
2025-08-20 23:15 ` Klara Modin
2025-08-20 23:53 ` Shakeel Butt
2025-08-21 19:37 ` Shakeel Butt
2025-08-19 0:36 ` [PATCH v3 2/4] mm: add vmstat for cgroup uncharged pages Boris Burkov
2025-08-19 2:50 ` Matthew Wilcox
2025-08-19 4:05 ` Boris Burkov
2025-08-19 15:53 ` Shakeel Butt
2025-08-19 23:46 ` Matthew Wilcox
2025-08-20 1:25 ` Shakeel Butt
2025-08-20 13:19 ` Matthew Wilcox
2025-08-20 16:21 ` Shakeel Butt
2025-08-19 0:36 ` [PATCH v3 3/4] btrfs: set AS_UNCHARGED on the btree_inode Boris Burkov
2025-08-19 0:36 ` [PATCH v3 4/4] memcg: remove warning from folio_lruvec Boris Burkov
2025-08-19 2:41 ` Matthew Wilcox
2025-08-19 5:20 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=hdxyep67zjudwbawdyasxhe4xeu7ckua35wo7whwy3zkjaa5ie@tibviq22ndhf \
--to=shakeel.butt@linux.dev \
--cc=akpm@linux-foundation.org \
--cc=boris@bur.io \
--cc=hannes@cmpxchg.org \
--cc=kernel-team@fb.com \
--cc=klarasmodin@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=willy@infradead.org \
--cc=wqu@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox