From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (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 D8C9D41DECA for ; Thu, 30 Jul 2026 12:24:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785414243; cv=none; b=s7lZTwcIiaMKyEd/qhB4ECSOdcN0r70EIOLLxrQsosfG3mh1434A7MlNHyPiRQchqgsV/1wRm5wMprVsNmqkkRQlFB19d8GzYKk3q7zg+/GMQNg9voh69sEUMGTb1t0xeMyX4ovG2W2FWhK8ADvgZZ9phcbmZr8WmPfYyRB1yt8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785414243; c=relaxed/simple; bh=Lp5oumv5jrLvwHfN744HgL5BCyjCvVs25Kbgo0NFJdY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RDofU7R1rgQdmcFPxEWb6y9V3AU9AllFxbnZ8ha6wP0gRhPN2B8uxyeg3KlqNyIllt7hnKX3fDtRZKdxRZPUsAfSxEtwN2ZBFCAwrqLdOp21r+1c5jxfwNUfnlIdsm9cFfdhUIY2dv9NnClqWn6A3f4hDtx4bJe5V5RtG7GTciU= 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=Qz0I6D4g; arc=none smtp.client-ip=209.85.216.51 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="Qz0I6D4g" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-384caf7b168so200877a91.1 for ; Thu, 30 Jul 2026 05:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785414241; x=1786019041; 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:content-type; bh=SH6mCGC7SVA7L7o4dC4xAqNxJgvdrWUhmXAualcScbA=; b=Qz0I6D4gb6PvL8itpd+gjr9q8eH7pmV+BU+8l71h5PEPpbsR5OJz9FxL1B/1LdnPfJ I+xEjH0DvIlxWqtxusidXNjwOpS3AVK0aNLGQ06AQ30J7riv7QDI43AcY6TbKjPbxRKb yDVIHbFgqriqEeY1+H937wdiI3hFhCsavoIx1asw+e9Cj4+E7jxGvVxUJSTyMiIaPET/ 8yRTG/zEgORnSpNkr+0iaN3EXYKugU7TKRtRi7pgbhX855Fb2gx+qyNj2hVMA6ISTRKi iZbGcIBOV6zXnD5H44kfJiud0v+YlnZ/qDX4PYN7k+qYqSKB+SSwZ7LjPRCFLiyExgsd uGAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785414241; x=1786019041; 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:content-type; bh=SH6mCGC7SVA7L7o4dC4xAqNxJgvdrWUhmXAualcScbA=; b=cuuRzlGRIr5nE3uazOfKP36VXVfR2SfyxqqtjAyyPzQQXCjsM9SB0UGFQvTSyyDZeM xHWZPhMX9WRonSlRfuaZYYRxdGXOxgfYZvutbq8k7xaNfUqcJT5vOkWQD9Ruc6DUa8wK Y4nZUHugu1GSV897TfxG4goA6ZgssJBhO1277eRYpxLPwCVBQSGqyBBwTQiCjh5LAy6h b9Zcis4f8nGLAWDkvHGTMIVMVyYjFSMdX95c1tmahsXYO6yYo+8NkPk3xyzCs3/aKz0P Yd2mx5i2nvY+Ih1HJ9gNIbo7rpe6Pd/qvXwero9N5opQnuisxOliMopCNyj6nFyQfUHM hw/g== X-Gm-Message-State: AOJu0Yzyu8+HLq2bsje+3uWMHpSLYWsR13PGoFoccAOPoYAAs3mgrV87 zgUAcDBpz1a7M5Oj0i0pN4YKqBWSxiOBZdUQjirKd8QZYs+V6qUlFiAR X-Gm-Gg: AR+sD12xcn1Vu4MCCpoYnyAgFXiZydV18ftutFU10vokdtvo4GOPfUWgSZVGgaXzBcT C0MJVpcvC4tfnnxXmTRpzsM4RvDs+rq7TJKdyPsJ6Olm7Q5bH3CAJla75mUNlz8RB9UwZsy6H0p VGWtrpM6HippO7odUlr2iNz07V9rXwzt3mjbqwWuAOY9vXjwurawP0t7s1jr63VUNQuDJydZm/W dpPO+A9c9tyajpFMVkSuACLSgbS6zO1KQTJs5keIlW1UOy8KYrs8NjKAidyBZBHA8Wui7rWwX/E 3x3X5I6KkNTPcChunkY9XRFolLrASOhrlqXCa2IxJ8fl+qSBf5PCMT3/a0wx3IOf9fmXYDU/xZh AIL8/VANxbJ1DI3bgdiGSVBzP/aEWoSQDhuIob+1Ho80Uy/yublqv1DmDUkZhQ3WDViTMaqO2cV LBglj0Hd9aGDjSg3B3nid14H9lNQpSLTLkq3mIRNPL+I6BR0Zaxx5PlRKk2BUpTDt0fV5IYf6+U SKRMm9qA63jYPQvZ5oPxWuNARhsvDOu6sHZcS2yRBK2fzW1Skp6 X-Received: by 2002:a17:90b:4fc3:b0:38d:90c1:2400 with SMTP id 98e67ed59e1d1-38f9bff9c78mr2879463a91.2.1785414240965; Thu, 30 Jul 2026 05:24:00 -0700 (PDT) Received: from debian.lan ([155.117.85.23]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f9b72d243sm995698a91.10.2026.07.30.05.23.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 05:24:00 -0700 (PDT) From: Xueyuan Chen To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, zhaonanzhe@xiaomi.com, baohua@kernel.org, hannes@cmpxchg.org, youngjun.park@lge.com, baolin.wang@linux.alibaba.com, hughd@google.com, chrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com, nphamcs@gmail.com, baoquan.he@linux.dev, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, david@kernel.org, ljs@kernel.org, liam@infradead.org, vbabka@kernel.org, rppt@kernel.org, surenb@google.com, qi.zheng@linux.dev, axelrasmussen@google.com, yuanchu@google.com, weixugc@google.com Subject: [RFC PATCH v5 3/4] mm/vmscan: avoid pointless large folio splits without swap Date: Thu, 30 Jul 2026 20:23:03 +0800 Message-ID: <20260730122304.2496440-4-xueyuan.chen21@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260730122304.2496440-1-xueyuan.chen21@gmail.com> References: <20260730122304.2496440-1-xueyuan.chen21@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: "Barry Song (Xiaomi)" When swap is disabled, exhausted, or unavailable due to memcg swap limits, splitting a large anonymous folio cannot make swapout progress. The fallback only destroys the large folio and inflates split statistics. Use -E2BIG from folio_alloc_swap() as the explicit signal that splitting the folio might allow swapout of smaller pieces. For other allocation failures, keep the existing activation path and avoid the split. This preserves the split fallback for fragmented or partially available swap, while avoiding it when there is no backing space for any part of the folio. Reported-by: Nanzhe Zhao Signed-off-by: Barry Song (Xiaomi) Signed-off-by: Xueyuan Chen --- mm/vmscan.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 26df81e773ff..457049e130df 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1263,6 +1263,8 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, */ if (folio_test_anon(folio) && folio_test_swapbacked(folio) && !folio_test_swapcache(folio)) { + int ret; + if (!(sc->gfp_mask & __GFP_IO)) goto keep_locked; if (folio_maybe_dma_pinned(folio)) @@ -1281,11 +1283,14 @@ static unsigned int shrink_folio_list(struct list_head *folio_list, split_folio_to_list(folio, folio_list)) goto activate_locked; } - if (folio_alloc_swap(folio)) { + ret = folio_alloc_swap(folio); + if (ret) { int __maybe_unused order = folio_order(folio); if (!folio_test_large(folio)) goto activate_locked_split; + if (ret != -E2BIG) + goto activate_locked; /* Fallback to swap normal pages */ if (split_folio_to_list(folio, folio_list)) goto activate_locked; -- 2.47.3