From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-174.mta0.migadu.com (out-174.mta0.migadu.com [91.218.175.174]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 671833BE14D for ; Fri, 17 Jul 2026 16:37:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.174 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784306266; cv=none; b=rczX9vQmhBaE1g6vj0CIaU3SZSlL+RVyiTVLhFAyZ1X3M7NVI4IcdV/tbMAkdSrcUnuAcGy3w/YSgTA818/LGWCTrANLlpSQO7MPqisaCeGWjFyjNgm0F5Jsoqj08rEcpWIV5HHK2bpPc8zax5/onx+zKXG4edpzTwc1a5/oCmU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784306266; c=relaxed/simple; bh=euR5TJrUhkWGCBLKAK9OzQND0hYtbq47ef9Tn79TfR0=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CJKAmxu9igyax+1HnmKmmNfNw9jstt7bYO8g2/Rx87JQZvGKGueLBHZZKDPFfGrM/xxNZ/CQre8UoYDW+rVQsQ2oyuzkz8KEMIe6L/4tdohDrEJMEdQ2JpPKkoTZAoY6leveYg2fzoSqWXGN9vmfSU2ySAYVJMMtGCNKRESwpK0= 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=HYtxESPZ; arc=none smtp.client-ip=91.218.175.174 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="HYtxESPZ" Date: Fri, 17 Jul 2026 09:37:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1784306259; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=vL/yhXHA9xDChnk74OgVrWXQ2aXe29pUqtPQN+eOWig=; b=HYtxESPZoniA+M7wM1pV9JgLeuWl55BKmQOphRsUwI7f7HzHnFgPTtZUykxQLhKUpG2PGS 9TaS4NSZlmApRp7kCcrLYMAxZEXmR5f7Ek8XxN/T14McUo3lhld4n74EygjfOWiXLhR75T AxBYp5MFj39fnqYJ1XipLYlkAHboSgk= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Ridong Cc: Andrew Morton , Johannes Weiner , Kairui Song , Qi Zheng , Barry Song , Axel Rasmussen , Yuanchu Xie , Wei Xu , David Hildenbrand , Michal Hocko , Lorenzo Stoakes , Zhongkun He , Muchun Song , Davidlohr Bueso , Roman Gushchin , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Ridong Chen Subject: Re: [PATCH 1/3] mm/vmscan: fix anon-only reclaim evicting file pages when swappiness=max Message-ID: References: <20260717113300.214717-1-ridong.chen@linux.dev> <20260717113300.214717-2-ridong.chen@linux.dev> 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: <20260717113300.214717-2-ridong.chen@linux.dev> X-Migadu-Flow: FLOW_OUT On Fri, Jul 17, 2026 at 07:32:58PM +0800, Ridong wrote: > From: Ridong Chen > > As Qi mentioned [1], when swappiness=max (SWAPPINESS_ANON_ONLY) is set, > the reclaim logic is expected to reclaim anonymous pages exclusively. > However, due to the current ordering of checks in get_scan_count(), > file pages may still be evicted if can_reclaim_anon_pages() returns > false, which contradicts the semantics of SWAPPINESS_ANON_ONLY. > > Reproducer in a cgroup holding 64M of file cache, with no swap configured: > > Before (file cache is wrongly evicted): > # cat memory.stat > anon 196608 > file 67178496 > pgscan_proactive 0 > # echo "64M swappiness=max" > memory.reclaim > # cat memory.stat > anon 208896 > file 4096 <- page cache evicted > pgsteal_proactive 16400 > pgscan_proactive 16400 > > After (file cache is left intact): > # cat memory.stat > anon 200704 > file 67178496 > pgscan_proactive 0 > # echo "64M swappiness=max" > memory.reclaim > -bash: echo: write error: Resource temporarily unavailable > # cat memory.stat > anon 208896 > file 67178496 <- page cache untouched > pgsteal_proactive 0 > pgscan_proactive 0 > > Fix this by bailing out early when SWAPPINESS_ANON_ONLY is set and no > anonymous pages are reclaimable, before falling back to file reclaim. > > [1] https://lore.kernel.org/cgroups/7ddf3eee-5fe2-45f7-8614-c8936a039e04@linux.dev/ > > Fixes: 68a1436bde00 ("mm: add swappiness=max arg to memory.reclaim for only anon reclaim") > Suggested-by: Qi Zheng > Signed-off-by: Ridong Chen Acked-by: Shakeel Butt