From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) (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 788A93BFAE8 for ; Fri, 17 Jul 2026 12:25:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784291157; cv=none; b=WiXCd66Xc6QnazuApzPpuLHqr+pQ/hoz3qUP4suHf743r7F1Eq6wVbsB5ii13qJ+gaD3EpgMrDX66faeaYpLvJwtTQg9Aatd54J/2QRp/fnx4PMJAEmFb24FlTgq/2c3ghI6boq0+Bm/BWe/MqupBfvg93Udf825B7Zij8CowqA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784291157; c=relaxed/simple; bh=2aWhzNwCb1BPCutP5oLGQCez7hpPKAKMLp03Caf1XA8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NbutPwIDOVkcXV74n1s0guvLe2XKGFb4e8GcPN5HSYns7cJspqpEyVCa0br3+9eJujk7p9kpOu9BRLpH/zVFiNd0wmP6oOurMVUUrLiL88qwtcllf/5g0nl9IXEytlUQFkbZw8KHPpiZvw0P+jozYL0BskUusXG1XwG418FfGyE= 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=ljbm+NDx; arc=none smtp.client-ip=209.85.214.175 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="ljbm+NDx" Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-2cecdc24b1cso7624035ad.1 for ; Fri, 17 Jul 2026 05:25:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784291152; x=1784895952; 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=TomD5kQp4QDVC9gWt3p58S/rBPFQXp4PWIaI11lLUvQ=; b=ljbm+NDxp2Ve297pyq8DLLHe6Ax4IRi9VHeq/WLyf+XAHGegomh6sN0CNhq83rsY4j OqfWbE1alXJMxHlrgWKlli6row4hhD1nOXiKGB82bG9XWDfKo/VA5klboyhBULB45MT7 UbC4oJgCZd5XASw3vSawAQ2l1i+8UnRc4iI8K8pwFqpAp74NtnZdHW8BhAaf00QKr98q tsS1KhgYtXgxMik/f8BBAIit17gnHsnDyFfpXHQbgu0u6dAChnxd0lSUF/LwAZPoUoXH durgplNqv6pMPhF+P9joJ/zxOAkPwFJtceuruLBvod9XTcm0VgrkQyiql1ypTBtl0U6C A/6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784291152; x=1784895952; 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=TomD5kQp4QDVC9gWt3p58S/rBPFQXp4PWIaI11lLUvQ=; b=cRSROzqasRuWT96k1+tTQjoh66jzhfOsU8NhOkkCnr6p6yiqsTXgf0bOGQqb2HAlMP kEnaf+5gNSqxKItCH8mVRam4JbcZ6dMlIPAlQ4FZHU3yyQZIk32c/7HyoK4P6pBB7ZoB K4SbkGcKvCqYaH+A4NBziKrC5l6dscx0FvWzwbcshdc8fwVzpWePagvEC4Guc6V1PSPN TY0o5VqKpnJ4lfuXeTNrD4lBqdCAdPeGvS4FKtxzAelPyqw/lZogRIFIWv005bthme+O XvAQKL4pd2r1U9RTC4aMpo4tP047nxxy7j+E/SwemZG7P8ssYYd8bCxt7nk+veWOTpIr 7OuQ== X-Gm-Message-State: AOJu0Yy4idCwnuS3+vB8s6xelizpVaKm/0KUsxH/WOqNLlFhMJPoIu1D YwaOLpEzevT7uI+g1XEB5Unnczc6LOLbl7m7uM+D+I7YNnZbuV5xg5LC X-Gm-Gg: AfdE7cnc7IRBxtb5HDYBf00PYUZcPEf78py0Rojp4O8zaeRpwR9Zac3aguhM6xJs9RI MqbwZlrUQs3KQ1H8w9Gw37HkvB95qfyO86nvBcs6MgiLc1Rwh9PUeDwv2hUHAB8lEkrMQcYe/jr cF9nbp2rT2rMUONIBgfHOp6+05f0h1/3OTEvZHhB5HankSV0IZMSSBU36d/pCC7SVmd5YYgZDak 9wgQojdZlbxDZ6h88xL/LTvEr4A5EDY8qXK913oZkjCc1TXUBn3/KotPqxOfwu9deZ2kmIZ0IKk ly2kgK0j+v3MyoymAttrwUzixKMbMCapImP3L4CFSEbbjRWEkYvIUNcoMLUN8nhSmOOa/2rEdve ZegTrjYksN5ZRBz83Xo5J/USjGZG55zcSMofvoj1Z1H2GGlHKZAdSnCD20YScdyploqLRTaQYvc 51QRs16ZoasRcUD5Pd1+O979cG50bkL87c4hzKGLIktUCN X-Received: by 2002:a17:902:f686:b0:2c9:d8c6:1db3 with SMTP id d9443c01a7336-2cf349c0eedmr20955805ad.8.1784291151963; Fri, 17 Jul 2026 05:25:51 -0700 (PDT) Received: from debian.lan ([240e:391:eb4:a240::1]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf347119dfsm9935955ad.56.2026.07.17.05.25.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Jul 2026 05:25:51 -0700 (PDT) From: Xueyuan Chen To: akpm@linux-foundation.org, linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, baohua@kernel.org, zhaonanzhe@xiaomi.com, hannes@cmpxchg.org, mhocko@kernel.org, roman.gushchin@linux.dev, shakeel.butt@linux.dev, muchun.song@linux.dev, chrisl@kernel.org, kasong@tencent.com, shikemeng@huaweicloud.com, nphamcs@gmail.com, bhe@redhat.com, youngjun.park@lge.com, 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, baolin.wang@linux.alibaba.com, hughd@google.com Subject: [RFC PATCH v3 3/4] mm/vmscan: avoid pointless large folio splits without swap Date: Fri, 17 Jul 2026 20:25:13 +0800 Message-ID: <20260717122514.51514-4-xueyuan.chen21@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260717122514.51514-1-xueyuan.chen21@gmail.com> References: <20260717122514.51514-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) --- mm/vmscan.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index bd1b1aa12581..40340a88f78e 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1260,6 +1260,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)) @@ -1278,10 +1280,11 @@ 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)) + if (!folio_test_large(folio) || ret != -E2BIG) goto activate_locked_split; /* Fallback to swap normal pages */ if (split_folio_to_list(folio, folio_list)) -- 2.47.3