From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mta1.migadu.com (out-87.mta1.migadu.com [95.215.58.87]) (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 E37344F55C9 for ; Thu, 3 Sep 2026 17:51:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.87 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788457886; cv=none; b=GRWn2nFp3WalVftsJBnZ6sDla3dzhd/QtwYDv0oUlQovpxFmKGLL+ySO+5gqBYbRF9sMKyyppq8AfKXlWSgA82d4tzw84+4otATe9UDwTQyd8jCwLvyE1cSKHPkNKXkHrkF2LRqIlZkxLwAP7clLZBG8F9m0kz4O+MNWiwkDYe0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788457886; c=relaxed/simple; bh=Q76IA5wKfZVmQPtYRc+wwddVBWZgCaJsAP54HPFaqac=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UmajouC2PcpoyyIcMmvX/LFgGVvpZBoY+YGUO6XaFgIAL/caJa27Lm+2Wrms2TaFxlJw7/LAk78eM6UfaKVuGDPy97M2WHv4qv2/PBnjfTaEGlLOdWdEklVrv5BsB8gcnDYXB+IpDuDhDgZ96Xdy1PIHSQ3QSGebnGOPit3X7zA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=hfl5XIDn; arc=none smtp.client-ip=95.215.58.87 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="hfl5XIDn" X-Envelope-To: linux-kernel@vger.kernel.org DKIM-Signature: a=rsa-sha256; bh=Q76IA5wKfZVmQPtYRc+wwddVBWZgCaJsAP54HPFaqac=; c=simple/simple; d=linux.dev; h=from:to:subject:date:message-id:mime-version:content-type; s=key1; t=1788457880; v=1; x=1789062680; b=hfl5XIDnO9tqeCkLXliayjUADfQtrvWt+83kmm0nyf4e00RNGgf3K32YLqyoQogjzXAFFQu+ JHwRmJcCD6Pf+TgWFgtbVtsQZBGSS0iD3j9Ksec+5FfESEe8cJWY7i8u13ap22RXw3QDbH+etlW pZPM/5v2krwPlJ1G4VB56bpE= X-Envelope-To: linux-kernel@vger.kernel.org Received: by smtp.migadu.com with ESMTPS id c3d49bd8c8bbf0fa; Thu, 03 Sep 2026 17:51:20 +0000 X-Mizu-Trace-ID: c3d49bd8c8bbf0fa X-Migadu-Flow: FLOW_OUT Date: Thu, 3 Sep 2026 10:51:18 -0700 From: Shakeel Butt To: Hui Zhu Cc: Johannes Weiner , Michal Hocko , Roman Gushchin , Muchun Song , Andrew Morton , David Hildenbrand , Qi Zheng , Lorenzo Stoakes , Kairui Song , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hui Zhu , stable@vger.kernel.org Subject: Re: [PATCH v2 1/3] mm: workingset: use lruvec_page_state_local() to count lru pages Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: On Mon, Aug 31, 2026 at 05:46:09PM +0800, Hui Zhu wrote: > From: Hui Zhu > > Commit 7404bd37cfbe ("mm: workingset: use lruvec_lru_size() to get the > number of lru pages") switched count_shadow_nodes() to lruvec_lru_size(). > With CONFIG_MEMCG enabled, lruvec_lru_size() reads mz->lru_zone_size, > which only the classic LRU paths maintain. MGLRU accounts its pages > through __update_lru_size(), which skips that array, so with MGLRU on the > four evictable LRU lists are always seen as empty. The shadow node budget > (pages >> 3) then collapses to slab plus unevictable pages, and the > workingset shadow shrinker reclaims eviction tokens almost as fast as they > are created, losing thrashing protection. > > lruvec_page_state_local() reads lruvec_stats->state_local instead, which > both classic LRU and MGLRU maintain. Switch back to it. The reparenting > race this re-exposes on cgroup v2 is closed by the follow-up patch that > redirects dying-memcg stat updates for all hierarchies. > > Fixes: 7404bd37cfbe ("mm: workingset: use lruvec_lru_size() to get the number of lru pages") > Cc: stable@vger.kernel.org > Signed-off-by: Hui Zhu Make this patch at the end (or after 2nd) of the series as it is only correct after the 2nd patch of the series. > --- > mm/workingset.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/mm/workingset.c b/mm/workingset.c > index f351798e723a..85a4e14e95d5 100644 > --- a/mm/workingset.c > +++ b/mm/workingset.c > @@ -693,10 +693,9 @@ static unsigned long count_shadow_nodes(struct shrinker *shrinker, > > mem_cgroup_flush_stats_ratelimited(sc->memcg); > lruvec = mem_cgroup_lruvec(sc->memcg, NODE_DATA(sc->nid)); > - > for (pages = 0, i = 0; i < NR_LRU_LISTS; i++) > - pages += lruvec_lru_size(lruvec, i, MAX_NR_ZONES - 1); > - > + pages += lruvec_page_state_local(lruvec, > + NR_LRU_BASE + i); > pages += lruvec_page_state_local( > lruvec, NR_SLAB_RECLAIMABLE_B) >> PAGE_SHIFT; > pages += lruvec_page_state_local( > -- > 2.53.0 >