From: Christoph Hellwig <hch@lst.de>
To: Andrew Price <anprice@redhat.com>
Cc: Christoph Hellwig <hch@lst.de>,
linux-fsdevel@vger.kernel.org, gfs2@lists.linux.dev,
Andreas Gruenbacher <agruenba@redhat.com>
Subject: Re: refactor the iomap writeback code v2
Date: Fri, 27 Jun 2025 09:02:40 +0200 [thread overview]
Message-ID: <20250627070240.GA32487@lst.de> (raw)
In-Reply-To: <07ef2fd5-d4cb-4fc3-8917-4bd6f06501d0@redhat.com>
On Thu, Jun 26, 2025 at 03:59:54PM +0100, Andrew Price wrote:
>> This version passes basic testing on xfs, and gets as far as mainline
>> for gfs2 (crashes in generic/361).
>
> I can't get generic/361 to crash per se, but it does fail as it detects the new warning about the missing ->migrate_folio for the gfs2_{rgrp,meta}_aops, which I'm looking at now.
>
> If you have different results to this, please let me know more about the crash and your test environment.
This is qemu on two virtio_blk devices, 512 byte sector size and the
followin mkfs option:
export MKFS_OPTIONS="-O -p lock_nolock"
generic/361 2s ... [ 627.703731] run fstests generic/361 at 2025-06-27 03:28:28
[ 628.022201] gfs2: fsid=vdc: Trying to join cluster "lock_nolock", "vdc"
[ 628.022666] gfs2: fsid=vdc: Now mounting FS (format 1802)...
[ 628.026350] gfs2: fsid=vdc.0: journal 0 mapped with 1 extents in 0ms
[ 628.026867] gfs2: fsid=vdc.0: jid=0, already locked for use
[ 628.027124] gfs2: fsid=vdc.0: jid=0: Looking at journal...
[ 628.032915] gfs2: fsid=vdc.0: jid=0: Journal head lookup took 5ms
[ 628.033227] gfs2: fsid=vdc.0: jid=0: Done
[ 628.033415] gfs2: fsid=vdc.0: first mount done, others may mount
[ 628.042031] loop0: detected capacity change from 0 to 2097152
[ 628.299636] gfs2: fsid=loop0: Trying to join cluster "lock_nolock", "loop0"
[ 628.300022] gfs2: fsid=loop0: Now mounting FS (format 1802)...
[ 628.303319] gfs2: fsid=loop0.0: journal 0 mapped with 1 extents in 0ms
[ 628.304047] gfs2: fsid=loop0.0: jid=0, already locked for use
[ 628.304344] gfs2: fsid=loop0.0: jid=0: Looking at journal...
[ 628.306401] gfs2: fsid=loop0.0: jid=0: Journal head lookup took 2ms
[ 628.306704] gfs2: fsid=loop0.0: jid=0: Done
[ 628.306925] gfs2: fsid=loop0.0: first mount done, others may mount
[ 629.093872] critical space allocation error, dev loop0, sector 913152 op 0x1:(WRITE) flags 0x4800
[ 629.094701] loop0: writeback error on inode 16708, offset 398209024, sector 913152
[ 629.094741] critical space allocation error, dev loop0, sector 917232 op 0x1:(WRITE) flags 0x4800
[ 629.095447] critical space allocation error, dev loop0, sector 919792 op 0x1:(WRITE) flags 0x8000
[ 629.095867] loop0: writeback error on inode 16708, offset 400293888, sector
917232
[ 629.095906] critical space allocation error, dev loop0, sector 921312 op 0x1:(WRITE) flags 0x4800
[ 629.096654] critical space allocation error, dev loop0, sector 923872 op 0x1:(WRITE) flags 0x8000
[ 629.097079] loop0: writeback error on inode 16708, offset 402378752, sector 921312
[ 629.097120] critical space allocation error, dev loop0, sector 925392 op 0x1:(WRITE) flags 0x4800
[ 629.097996] critical space allocation error, dev loop0, sector 927952 op 0x1:(WRITE) flags 0x8000
[ 629.098464] loop0: writeback error on inode 16708, offset 404463616, sector 925392
[ 629.098506] critical space allocation error, dev loop0, sector 929472 op 0x1:(WRITE) flags 0x4800
[ 629.099325] critical space allocation error, dev loop0, sector 932032 op 0x1:(WRITE) flags 0x8000
[ 629.099794] loop0: writeback error on inode 16708, offset 406548480, sector 929472
[ 629.099844] critical space allocation error, dev loop0, sector 933552 op 0x1:(WRITE) flags 0x4800
[ 629.100634] loop0: writeback error on inode 16708, offset 408633344, sector
933552
[ 629.100676] loop0: writeback error on inode 16708, offset 410718208, sector 937632
[ 629.101016] loop0: writeback error on inode 16708, offset 412803072, sector 941712
[ 629.101497] loop0: writeback error on inode 16708, offset 414887936, sector 945792
[ 629.102236] loop0: writeback error on inode 16708, offset 416972800, sector 949872
[ 629.106734] Buffer I/O error on dev loop0, logical block 16708, lost async page write
[ 629.107413] Buffer I/O error on dev loop0, logical block 17192, lost async page write
[ 629.107915] Buffer I/O error on dev loop0, logical block 17219, lost async page write
[ 629.108248] Buffer I/O error on dev loop0, logical block 17729, lost async page write
[ 629.109214] Buffer I/O error on dev loop0, logical block 18239, lost async page write
[ 629.109552] Buffer I/O error on dev loop0, logical block 18749, lost async page write
[ 629.109875] Buffer I/O error on dev loop0, logical block 19259, lost async page write
[ 629.110196] Buffer I/O error on dev loop0, logical block 19769, lost async page write
[ 629.110275] Buffer I/O error on dev loop0, logical block 81503, lost async page write
[ 629.110524] Buffer I/O error on dev loop0, logical block 20279, lost async page write
[ 629.111725] gfs2: fsid=loop0.0: fatal: I/O error - block = 16708, function = gfs2_ail1_empty_one8
[ 629.112427] gfs2: fsid=loop0.0: about to withdraw this file system
[ 634.215552] gfs2: fsid=loop0.0: Journal recovery skipped for jid 0 until next mount.
[ 634.215906] gfs2: fsid=loop0.0: Glock dequeues delayed: 0
[ 634.216172] gfs2: fsid=loop0.0: File system withdrawn
[ 634.216397] CPU: 1 UID: 0 PID: 148587 Comm: mount Tainted: G N 6.16.0-rc3+ #375
[ 634.216399] Tainted: [N]=TEST
[ 634.216400] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.16.3-debian-1.16.3-2 04
[ 634.216401] Call Trace:
[ 634.216402] <TASK>
[ 634.216402] dump_stack_lvl+0x4b/0x70
[ 634.216409] gfs2_withdraw.cold+0x98/0x4aa
[ 634.216411] ? __pfx_autoremove_wake_function+0x10/0x10
[ 634.216413] revoke_lo_before_commit+0x14/0x160
[ 634.216415] gfs2_log_flush+0x444/0xbf0
[ 634.216417] gfs2_sync_fs+0x39/0x50
[ 634.216419] sync_filesystem+0x76/0x90
[ 634.216421] gfs2_reconfigure+0x30/0x360
[ 634.216423] reconfigure_super+0xc1/0x250
[ 634.216425] path_mount+0x95a/0xb40
[ 634.216426] __x64_sys_mount+0x100/0x130
[ 634.216426] do_syscall_64+0x50/0x1e0
[ 634.216429] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 634.216430] RIP: 0033:0x7f96fc253e0a
[ 634.216433] Code: 48 8b 0d f9 7f 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 8
[ 634.216434] RSP: 002b:00007fffd5523288 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
[ 634.216436] RAX: ffffffffffffffda RBX: 000055b819d26aa0 RCX: 00007f96fc253e0a
[ 634.216437] RDX: 000055b819d26cd0 RSI: 000055b819d288b0 RDI: 000055b819d27ca0
[ 634.216437] RBP: 0000000000000000 R08: 000055b819d26cf0 R09: 000055b819d26d10
[ 634.216438] R10: 0000000000200021 R11: 0000000000000246 R12: 000055b819d27ca0
[ 634.216438] R13: 000055b819d26cd0 R14: 00007f96fc3bb264 R15: 000055b819d26bb8
[ 634.216439] </TASK>
[ 634.259070] ------------[ cut here ]------------
[ 634.259369] kernel BUG at fs/gfs2/super.c:76!
[ 634.262243] Oops: invalid opcode: 0000 [#1] SMP NOPTI
[ 634.263386] CPU: 0 UID: 0 PID: 148595 Comm: umount Tainted: G N 6.16.0-rc3+ #37
[ 634.263832] Tainted: [N]=TEST
[ 634.263956] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04
[ 634.264332] RIP: 0010:gfs2_jindex_free+0x13e/0x170
[ 634.264647] Code: 08 e8 56 42 98 ff 48 c7 43 48 00 00 00 00 48 89 df e8 c6 38 90 ff 48 8b 04 24 b
[ 634.265562] RSP: 0018:ffffc90004ba3df8 EFLAGS: 00010286
[ 634.265805] RAX: ffff88811a3f41c0 RBX: ffff88811a3f41c0 RCX: 0000000000000000
[ 634.266141] RDX: 0000000000000001 RSI: ffff88810425c610 RDI: 00000000ffffffff
[ 634.266454] RBP: ffffc90004ba3df8 R08: ffff8881364f7638 R09: ffff8881364f75e8
[ 634.266732] R10: 0000000000000000 R11: ffff8881364f7508 R12: dead000000000122
[ 634.267009] R13: dead000000000100 R14: ffff88810425c620 R15: 0000000000000000
[ 634.267285] FS: 00007f3f53e6d840(0000) GS:ffff8882b35d7000(0000) knlGS:0000000000000000
[ 634.267622] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 634.267856] CR2: 00005625aaa38cc0 CR3: 00000001047e6006 CR4: 0000000000772ef0
[ 634.268128] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 634.268405] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 634.268685] PKRU: 55555554
[ 634.268805] Call Trace:
[ 634.268913] <TASK>
[ 634.269002] gfs2_put_super+0x165/0x230
[ 634.269157] generic_shutdown_super+0x79/0x180
[ 634.269334] kill_block_super+0x15/0x40
[ 634.269578] deactivate_locked_super+0x2b/0xb0
[ 634.269788] cleanup_mnt+0xb5/0x150
[ 634.269954] task_work_run+0x54/0x80
[ 634.270123] exit_to_user_mode_loop+0xbc/0xc0
[ 634.270326] do_syscall_64+0x1bc/0x1e0
[ 634.270503] entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 634.270731] RIP: 0033:0x7f3f54099b37
[ 634.270899] Code: cf 92 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 0f 1f 44 00 00 31 f6 e9 09 00 00 00 8
[ 634.271717] RSP: 002b:00007ffd63032398 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
[ 634.272052] RAX: 0000000000000000 RBX: 00005630901e2bb8 RCX: 00007f3f54099b37
[ 634.272371] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00005630901e6b60
[ 634.272695] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000073
[ 634.273017] R10: 0000000000000000 R11: 0000000000000246 R12: 00007f3f541d4264
[ 634.273342] R13: 00005630901e6b60 R14: 00005630901e2cd0 R15: 00005630901e2aa0
[ 634.273703] </TASK>
[ 634.273809] Modules linked in: kvm_intel kvm irqbypass [last unloaded: scsi_debug]
[ 634.274259] ---[ end trace 0000000000000000 ]---
[ 634.274460] RIP: 0010:gfs2_jindex_free+0x13e/0x170
[ 634.274753] Code: 08 e8 56 42 98 ff 48 c7 43 48 00 00 00 00 48 89 df e8 c6 38 90 ff 48 8b 04 24 b
[ 634.275604] RSP: 0018:ffffc90004ba3df8 EFLAGS: 00010286
[ 634.275857] RAX: ffff88811a3f41c0 RBX: ffff88811a3f41c0 RCX: 0000000000000000
[ 634.276230] RDX: 0000000000000001 RSI: ffff88810425c610 RDI: 00000000ffffffff
[ 634.276549] RBP: ffffc90004ba3df8 R08: ffff8881364f7638 R09: ffff8881364f75e8
[ 634.276896] R10: 0000000000000000 R11: ffff8881364f7508 R12: dead000000000122
[ 634.277208] R13: dead000000000100 R14: ffff88810425c620 R15: 0000000000000000
[ 634.277549] FS: 00007f3f53e6d840(0000) GS:ffff8882b35d7000(0000) knlGS:0000000000000000
[ 634.277948] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 634.278201] CR2: 00005625aaa38cc0 CR3: 00000001047e6006 CR4: 0000000000772ef0
[ 634.278513] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 634.278819] DR3: 0000000000000000 DR6: 00000000ffff07f0 DR7: 0000000000000400
[ 634.279127] PKRU: 55555554
next prev parent reply other threads:[~2025-06-27 7:02 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-17 10:54 refactor the iomap writeback code v2 Christoph Hellwig
2025-06-17 10:55 ` [PATCH 01/11] iomap: pass more arguments using struct iomap_writepage_ctx Christoph Hellwig
2025-06-17 17:54 ` Joanne Koong
2025-06-18 4:35 ` Christoph Hellwig
2025-06-17 10:55 ` [PATCH 02/11] iomap: cleanup the pending writeback tracking in iomap_writepage_map_blocks Christoph Hellwig
2025-06-17 10:55 ` [PATCH 03/11] iomap: refactor the writeback interface Christoph Hellwig
2025-06-17 18:33 ` Joanne Koong
2025-06-18 4:39 ` Christoph Hellwig
2025-06-17 10:55 ` [PATCH 04/11] iomap: hide ioends from the generic writeback code Christoph Hellwig
2025-06-17 19:22 ` Joanne Koong
2025-06-18 4:41 ` Christoph Hellwig
2025-06-17 10:55 ` [PATCH 05/11] iomap: add public helpers for uptodate state manipulation Christoph Hellwig
2025-06-17 10:55 ` [PATCH 06/11] iomap: move all ioend handling to ioend.c Christoph Hellwig
2025-06-17 19:35 ` Joanne Koong
2025-06-17 10:55 ` [PATCH 07/11] iomap: rename iomap_writepage_map to iomap_writeback_folio Christoph Hellwig
2025-06-17 19:44 ` Joanne Koong
2025-06-18 4:42 ` Christoph Hellwig
2025-06-17 10:55 ` [PATCH 08/11] iomap: move folio_unlock out of iomap_writeback_folio Christoph Hellwig
2025-06-17 10:55 ` [PATCH 09/11] iomap: export iomap_writeback_folio Christoph Hellwig
2025-06-17 22:00 ` Joanne Koong
2025-06-17 10:55 ` [PATCH 10/11] iomap: replace iomap_folio_ops with iomap_write_ops Christoph Hellwig
2025-06-17 22:25 ` Joanne Koong
2025-06-18 4:43 ` Christoph Hellwig
2025-06-17 10:55 ` [PATCH 11/11] iomap: add read_folio_range() handler for buffered writes Christoph Hellwig
2025-06-26 14:59 ` refactor the iomap writeback code v2 Andrew Price
2025-06-27 7:02 ` Christoph Hellwig [this message]
2025-07-07 12:07 ` Andrew Price
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=20250627070240.GA32487@lst.de \
--to=hch@lst.de \
--cc=agruenba@redhat.com \
--cc=anprice@redhat.com \
--cc=gfs2@lists.linux.dev \
--cc=linux-fsdevel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).