From: Breno Leitao <leitao@debian.org>
To: Kairui Song <kasong@tencent.com>
Cc: linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
Kemeng Shi <shikemeng@huaweicloud.com>,
Nhat Pham <nphamcs@gmail.com>, Baoquan He <bhe@redhat.com>,
Barry Song <baohua@kernel.org>,
Johannes Weiner <hannes@cmpxchg.org>,
David Hildenbrand <david@kernel.org>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
Youngjun Park <youngjun.park@lge.com>,
linux-kernel@vger.kernel.org, Chris Li <chrisl@kernel.org>,
kernel-team@meta.com
Subject: Re: [PATCH v3 09/12] mm, swap: use the swap table to track the swap count
Date: Mon, 11 May 2026 04:19:50 -0700 [thread overview]
Message-ID: <agG6Dp0umhs6O1SY@gmail.com> (raw)
In-Reply-To: <20260218-swap-table-p3-v3-9-f4e34be021a7@tencent.com>
Hello Kairui,
On Wed, Feb 18, 2026 at 04:06:34AM +0800, Kairui Song wrote:
> @@ -479,6 +469,7 @@ static void swap_cluster_assert_empty(struct swap_cluster_info *ci,
> } while (++ci_off < ci_end);
>
> WARN_ON_ONCE(bad_slots != (swapoff ? ci->count : 0));
> + WARN_ON_ONCE(nr == SWAPFILE_CLUSTER && ci->extend_table);
On my automatic tests with 7.1 kernel I am seeing the following warning.
The test was running on commit 74fe02ce122a6103f20 ("Merge tag
'wq-for-7.1-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq").
This happened only once so far.
WARNING: mm/swapfile.c:471 at swap_cluster_assert_empty+0x1b6/0x1d0, CPU#2: swapoff/1265108 ^[[36m[warn]^[[0m
Modules linked in: sunrpc(E) squashfs(E) sch_fq(E) act_gact(E) tcp_diag(E) inet_diag(E) cls_bpf(E) intel_uncore_frequency(E) intel_uncore_frequency_common(E) skx_edac(E) skx_edac_common(E) nfit(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) coretemp(E) kvm_intel(E) kvm(E) evdev(E) iTCO_wdt(E) ipmi_si(E) irqbypass(E) ipmi_devintf(E) xhci_pci(E) acpi_cpufreq(E) wmi(E) ipmi_msghandler(E) button(E) i2c_i801(E) xhci_hcd(E) i2c_smbus(E) sch_fq_codel(E) ip_tables(E) ip6_tables(E) vhost_net(E) tun(E) vhost(E) vhost_iotlb(E) tap(E) tls(E) mpls_gso(E) bpf_preload(E) mpls_iptunnel(E) mpls_router(E) fou(E) drm(E) loop(E) backlight(E) drm_panel_orientation_quirks(E) autofs4(E) raid0(E) efivarfs(E) dm_crypt(E)
CPU: 2 UID: 0 PID: 1265108 Comm: swapoff Tainted: G S E 7.1.0-0_fbk701_debugnightly_rc0_upstream_76_g74fe02ce122a #1 PREEMPTLAZY
Tainted: [S]=CPU_OUT_OF_SPEC, [E]=UNSIGNED_MODULE
Hardware name: Quanta Twin Lakes MP/Twin Lakes Passive MP, BIOS F09M3A09 07/03/2023
RIP: 0010:swap_cluster_assert_empty+0x1b6/0x1d0
Code: e8 03 48 b9 00 00 00 00 00 fc ff df 0f b6 04 08 84 c0 75 1a 41 0f b7 07 39 c3 74 99 0f 0b 81 7c 24 08 00 02 00 00 74 97 eb be <0f> 0b eb ba 44 89 f9 80 e1 07 fe c1 38 c1 7c da 4c 89 ff e8 12 46
RSP: 0018:ffff8882a2257a48 EFLAGS: 00010286
RAX: 1ffff1106956192d RBX: 0000000000000000 RCX: dffffc0000000000
RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff8884dbeeaff8
RBP: ffff8884dbeeaff8 R08: ffff8884dbeeafff R09: 1ffff1109b7dd5ff
R10: dffffc0000000000 R11: ffffed109b7dd600 R12: ffff88834ab0c960
R13: 0000000000000200 R14: ffff88834ab0c968 R15: 0000000000000200
FS: 00007fab994cf800(0000) GS:ffff88909c8c0000(0000) knlGS:0000000000000000
CR2: 00007f789da9b110 CR3: 00000004bdc63001 CR4: 00000000007726f0
PKRU: 55555554
Call Trace:
<TASK>
__free_cluster+0x2f/0x180
swap_cache_del_folio+0x120/0x240
folio_free_swap+0x51b/0x630
? folio_free_swap+0x2e6/0x630
try_to_unuse+0x216d/0x2470
? try_to_unuse+0xbc9/0x2470
__se_sys_swapoff+0x3fb/0x8e0
do_syscall_64+0xfa/0x990
? irqentry_exit+0x102/0x770
? trace_irq_disable+0x64/0x1c0
? entry_SYSCALL_64_after_hwframe+0x4b/0x53
entry_SYSCALL_64_after_hwframe+0x4b/0x53
RIP: 0033:0x7fab996ac08b
Code: 0f 1e fa 48 83 fe 01 48 8b 15 89 ad 0c 00 19 c0 83 e0 f0 83 c0 26 64 89 02 b8 ff ff ff ff c3 f3 0f 1e fa b8 a8 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 5d ad 0c 00 f7 d8 64 89 01 48
RSP: 002b:00007fff9cde2488 EFLAGS: 00000202 ORIG_RAX: 00000000000000a8
RAX: ffffffffffffffda RBX: 00007fff9cde3e98 RCX: 00007fab996ac08b
RDX: 0000000000000001 RSI: 0000000000000c00 RDI: 000055bfaf2199b0
RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000001
R10: 00000000000000bf R11: 0000000000000202 R12: 0000000000000000
R13: 000055bfaf211479 R14: 000055bfaf212b00 R15: 000055bfaf212ad8
</TASK>
irq event stamp: 0
hardirqs last enabled at (0): [<0000000000000000>] 0x0
hardirqs last disabled at (0): [<ffffffff81441ab3>] copy_process+0x833/0x32b0
softirqs last enabled at (0): [<ffffffff81441ab3>] copy_process+0x833/0x32b0
softirqs last disabled at (0): [<0000000000000000>] 0x0
Decodeding the stack, I see the following file:lines (against the same
commit as above (74fe02ce122a6103f20))
swap_cluster_assert_empty+0x1b6 mm/swapfile.c:471 WARN: nr == SWAPFILE_CLUSTER && ci->extend_table
__free_cluster+0x2f mm/swapfile.c:585 (return from swap_cluster_assert_empty)
then swap_cluster_free_table at line 586
swap_cache_del_folio+0x120 mm/swap_state.c:298 __swap_cache_del_folio()
(chain __swap_cluster_free_entries → free_cluster → __free_cluster all inlined)
folio_free_swap+0x51b mm/swapfile.c:2037 swap_cache_del_folio(folio)
folio_free_swap+0x2e6 mm/swapfile.c:2034 if (folio_maybe_swapped(folio))
try_to_unuse+0x216d mm/swapfile.c:2628
try_to_unuse+0xbc9 mm/swapfile.c:2592 unuse_mm() chain
__se_sys_swapoff+0x3fb mm/swapfile.c:2903
do_syscall_64+0xfa arch/x86/entry/syscall_64.c
Does it ring a bell?
--breno
next prev parent reply other threads:[~2026-05-11 11:20 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-17 20:06 [PATCH v3 00/12] mm, swap: swap table phase III: remove swap_map Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-17 20:06 ` [PATCH v3 01/12] mm, swap: protect si->swap_file properly and use as a mount indicator Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 6:36 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 02/12] mm, swap: clean up swapon process and locking Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 6:45 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 03/12] mm, swap: remove redundant arguments and locking for enabling a device Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 6:48 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 04/12] mm, swap: consolidate bad slots setup and make it more robust Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 6:51 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 05/12] mm/workingset: leave highest bits empty for anon shadow Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 6:56 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 06/12] mm, swap: implement helpers for reserving data in the swap table Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:00 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 07/12] mm, swap: mark bad slots in swap table directly Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:01 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 08/12] mm, swap: simplify swap table sanity range check Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:02 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 09/12] mm, swap: use the swap table to track the swap count Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-18 10:40 ` kernel test robot
2026-02-18 12:22 ` Kairui Song
2026-02-19 7:06 ` Chris Li
2026-05-11 11:19 ` Breno Leitao [this message]
2026-05-11 14:00 ` Kairui Song
2026-02-17 20:06 ` [PATCH v3 10/12] mm, swap: no need to truncate the scan border Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:10 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 11/12] mm, swap: simplify checking if a folio is swapped Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:18 ` Chris Li
2026-02-17 20:06 ` [PATCH v3 12/12] mm, swap: no need to clear the shadow explicitly Kairui Song
2026-02-17 20:06 ` Kairui Song via B4 Relay
2026-02-19 7:19 ` Chris Li
2026-02-17 20:10 ` [PATCH v3 00/12] mm, swap: swap table phase III: remove swap_map Kairui Song
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=agG6Dp0umhs6O1SY@gmail.com \
--to=leitao@debian.org \
--cc=akpm@linux-foundation.org \
--cc=baohua@kernel.org \
--cc=bhe@redhat.com \
--cc=chrisl@kernel.org \
--cc=david@kernel.org \
--cc=hannes@cmpxchg.org \
--cc=kasong@tencent.com \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=nphamcs@gmail.com \
--cc=shikemeng@huaweicloud.com \
--cc=youngjun.park@lge.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.