From nobody Mon Feb 9 13:21:19 2026 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 25B1D346FB2 for ; Wed, 28 Jan 2026 09:31:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769592670; cv=none; b=EcTXe278yy8Eox0e++OuaUZnnI8MSnVffAXGbS0W8M7qsAozf7xX2++Eg2c7w492qHJMF7hr+984UmZUZYyO1gv6g2uLYlRWaJuVx4v1hh0kxSm8Ha5C36SV5RSG2rzV+8cL4gL88l4vW+a9pgOyr69muOTqZ2Q1yJf/iSmrrSY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769592670; c=relaxed/simple; bh=SuI2Rxmjj0jMV0SgfFqaXs4+Nzd8b1fzLPf7iTwwCdw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kv+8DA1kEYi2YL3eb2lGpuX2Yhz7B0VHQ8MN4iI/WC8YFtztXMPKhWIXBR5RlJah65Zl6MxR4n63ZVdpobag5dawYywrXmSIABQDaE9m5u+tQ4PXpjApx/epbE8d2w77BW2Hfe8XGUcOOyCCInvUsv7Pa9co/pBSoiBtr+Xw5TA= 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=ciQA3k1N; arc=none smtp.client-ip=209.85.216.42 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="ciQA3k1N" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-34f634dbfd6so5475322a91.2 for ; Wed, 28 Jan 2026 01:31:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769592668; x=1770197468; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=zKtT6XQ/JEquVZGbic/ESwJDGPsZ48peRTM8lwccGeU=; b=ciQA3k1NwM7DFtA19RVUNq/HW54Qb/TTJ9oG3Rytit3VouCdKWco71n+DfLXqRwCgL jA+PaXvWRE0OhikxjMJvwEKvbO8Ob1g1uRWrI3N6wc9jM0MTUL9NuHtRVNJHQ7s9LYXA fVvUWsHohpVYpXcqvr6fST/6s0Ajf4rUxIwfAYwUl6MZWprBf3QgSjh+r5qLqDleMEGe dXFrDSbOo7onlPond5UrXDAqmKdN7PUgBKFUX8DySeeM6A8m2nG1JPzFdqGh5mGxM9oo QxzMANNMguN7Ky6EiULGv8PN2uX2onwPVf+IhGKZTH2UfOed1j9NkETgDw+fOP1ERURJ U+Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769592668; x=1770197468; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zKtT6XQ/JEquVZGbic/ESwJDGPsZ48peRTM8lwccGeU=; b=EkArK32tCEBE05tZC4uRePHX18NbMJCYXwRfNTqdUb/iY9zETDPhhfjpQUgGEw2mlI 50jNp4l7JOb1n7wVwFbM8yKMSsqcYrMktSn2s11SV6HsZjkaaWBnjOLTt9WdmGj1Vhg9 i9V+sK/5Sr8loBdiRWM0468pBAWagWbgtFlH/qj0mXApPOaiFy/2Vvw42+8+oG8MNrQa TrUhHLGv1INs9Kk4HFLYefy6KJJ9oueu5B7MtB1U7MnEoLfbJ7OsBsqV6wfcqkIKT8Lv cVXbbI9CG9chsTIobB6i+Lp8aJSH6YqiJNsifFy1iwSukeTQ1/EX0ZMhVbJ4ur/B7lcX X3sg== X-Forwarded-Encrypted: i=1; AJvYcCWfXgsRBPYwRru1b4rWFXFI7YMEEuY0pYH6wNj5gc67OVo3GPBYZCrGp4pRp7V/EYMagJcHtuB7JapU9sE=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+yil9NSpND2qbN8QtkNtq9zAJW5JOu32+LAeD0B8o9XFSOK5h qbmu5MZDd3frm+UzL3ywlLyBwSZvoMDroNvLgfH7Zx+SGSHjvCeHeyCs X-Gm-Gg: AZuq6aI/6LuVrbv0YEk+/zYa8dYNaKTgNWen3Jtv00Z3fMO3Vm4zQvb1gkgINncxnWp J0ZPNG+3s1Io8ic8z4E+ZpeoKLYL7PnI6jY6n7PTIaK3xE3EDLNKzvJ4N+uWetUNFyAeel/xSsK 3DbPDmN8Y8JgvaD/0MkIY0cheyliQT0ZU45i1fcUNTTumft0PMMdH4Tc8sulQtBb5LdUww4jYZu NfdT4gtypipIzC/C/ihHvt9+OkIeuNN3PQgbW5PK6LbWZyd2xaQ9Llc+glCYj7YW0s/PRXTs43z gpKQ9cEtYUFwGfrrApYN1TOkymxwvUrJKtIVfhhJKkvy8JPISf7GDEZimHMTaBmHESeHxh/h3ov DPYpwrAHs5h5S+Akw1KFjQgpysCb1mEP74lENrauzV9//N4lS8GIBiU6TIamy7w2s8tDiU2lkQu N+cmzcKjTOowZcqN1j4MMrJhS1IV42shKIRSqEu8Hj4xw+9ZrNJw8/QCm3siTGXsjlh1IG X-Received: by 2002:a17:90a:d603:b0:34a:b4a2:f0c8 with SMTP id 98e67ed59e1d1-353feda7c73mr3956579a91.30.1769592668439; Wed, 28 Jan 2026 01:31:08 -0800 (PST) Received: from [127.0.0.1] ([43.132.141.21]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3540f3eca6dsm1872235a91.15.2026.01.28.01.31.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Jan 2026 01:31:07 -0800 (PST) From: Kairui Song Date: Wed, 28 Jan 2026 17:28:34 +0800 Subject: [PATCH v2 10/12] mm, swap: no need to truncate the scan border 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="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260128-swap-table-p3-v2-10-fe0b67ef0215@tencent.com> References: <20260128-swap-table-p3-v2-0-fe0b67ef0215@tencent.com> In-Reply-To: <20260128-swap-table-p3-v2-0-fe0b67ef0215@tencent.com> To: linux-mm@kvack.org Cc: Andrew Morton , Kemeng Shi , Nhat Pham , Baoquan He , Barry Song , Johannes Weiner , David Hildenbrand , Lorenzo Stoakes , Youngjun Park , linux-kernel@vger.kernel.org, Chris Li , Kairui Song X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1769592628; l=1640; i=kasong@tencent.com; s=kasong-sign-tencent; h=from:subject:message-id; bh=ck39h4o+3Bnrl/Eu9W8vHqj0uF3mkWDHUJNaikw0DaQ=; b=kJCS5ZA08P6/rGRGb+xeKM/R1VDwIlZaFTsuoDqsV+6Ui4ub/Gh80jMko5GwkW+9xBorUMw8i WZE9V+lM9lBAP4xPOGnTEu94K9jhWqa2iuEXNM76wmVfxgMpiP65aqW X-Developer-Key: i=kasong@tencent.com; a=ed25519; pk=kCdoBuwrYph+KrkJnrr7Sm1pwwhGDdZKcKrqiK8Y1mI= From: Kairui Song swap_map had a static flexible size, so the last cluster won't be fully covered, hence the allocator needs to check the scan border to avoid OOB. But the swap table has a fixed-sized swap table for each cluster, and the slots beyond the device size are marked as bad slots. The allocator can simply scan all slots as usual, and any bad slots will be skipped. Signed-off-by: Kairui Song --- mm/swap.h | 2 +- mm/swapfile.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/swap.h b/mm/swap.h index 751430e2d2a5..9fc5fecdcfdf 100644 --- a/mm/swap.h +++ b/mm/swap.h @@ -85,7 +85,7 @@ static inline struct swap_cluster_info *__swap_offset_to_= cluster( struct swap_info_struct *si, pgoff_t offset) { VM_WARN_ON_ONCE(percpu_ref_is_zero(&si->users)); /* race with swapoff */ - VM_WARN_ON_ONCE(offset >=3D si->max); + VM_WARN_ON_ONCE(offset >=3D roundup(si->max, SWAPFILE_CLUSTER)); return &si->cluster_info[offset / SWAPFILE_CLUSTER]; } =20 diff --git a/mm/swapfile.c b/mm/swapfile.c index 45579ace27ba..a7fc8837eb74 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -945,8 +945,8 @@ static unsigned int alloc_swap_scan_cluster(struct swap= _info_struct *si, { unsigned int next =3D SWAP_ENTRY_INVALID, found =3D SWAP_ENTRY_INVALID; unsigned long start =3D ALIGN_DOWN(offset, SWAPFILE_CLUSTER); - unsigned long end =3D min(start + SWAPFILE_CLUSTER, si->max); unsigned int order =3D likely(folio) ? folio_order(folio) : 0; + unsigned long end =3D start + SWAPFILE_CLUSTER; unsigned int nr_pages =3D 1 << order; bool need_reclaim, ret, usable; =20 --=20 2.52.0