linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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


  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).