Linux Btrfs filesystem development
 help / color / mirror / Atom feed
From: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
To: linux-btrfs@vger.kernel.org
Subject: misc-next and for-next: kernel BUG at fs/btrfs/extent_io.c:2350! during raid5 recovery
Date: Mon, 8 Aug 2022 23:31:51 -0400	[thread overview]
Message-ID: <YvHVJ8t5vzxH9fS9@hungrycats.org> (raw)

Test case is:

	- start with a -draid5 -mraid1 filesystem on 2 disks

	- run assorted IO with a mix of reads and writes (randomly
	run rsync, bees, snapshot create/delete, balance, scrub, start
	replacing one of the disks...)

	- cat /dev/zero > /dev/vdb (device 1) in the VM guest, or run
	blkdiscard on the underlying SSD in the VM host, to simulate
	single-disk data corruption

	- repeat until something goes badly wrong, like unrecoverable
	read error or crash

This test case always failed quickly before (corruption was rarely
if ever fully repaired on btrfs raid5 data), and it still doesn't work
now, but now it doesn't work for a new reason.  Progress?

There is now a BUG_ON arising from this test case:

	[  241.051326][   T45] btrfs_print_data_csum_error: 156 callbacks suppressed
	[  241.100910][   T45] ------------[ cut here ]------------
	[  241.102531][   T45] kernel BUG at fs/btrfs/extent_io.c:2350!
	[  241.103261][   T45] invalid opcode: 0000 [#2] PREEMPT SMP PTI
	[  241.104044][   T45] CPU: 2 PID: 45 Comm: kworker/u8:4 Tainted: G      D           5.19.0-466d9d7ea677-for-next+ #85 89955463945a81b56a449b1f12383cf0d5e6b898
	[  241.105652][   T45] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014
	[  241.106726][   T45] Workqueue: btrfs-endio-raid56 raid_recover_end_io_work
	[  241.107716][   T45] RIP: 0010:repair_io_failure+0x359/0x4b0
	[  241.108569][   T45] Code: 2b e8 cb 12 79 ff 48 c7 c6 20 23 ac 85 48 c7 c7 00 b9 14 88 e8 d8 e3 72 ff 48 8d bd 48 ff ff ff e8 5c 7e 26 00 e9 f6 fd ff ff <0f> 0b e8 60 d1 5e 01 85 c0 74 cc 48 c
	7 c7 b0 1d 45 88 e8 d0 8e 98
	[  241.111990][   T45] RSP: 0018:ffffbca9009f7a08 EFLAGS: 00010246
	[  241.112911][   T45] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
	[  241.115676][   T45] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
	[  241.118009][   T45] RBP: ffffbca9009f7b00 R08: 0000000000000000 R09: 0000000000000000
	[  241.119484][   T45] R10: 0000000000000000 R11: 0000000000000000 R12: ffff9cd1b9da4000
	[  241.120717][   T45] R13: 0000000000000000 R14: ffffe60cc81a4200 R15: ffff9cd235b4dfa4
	[  241.122594][   T45] FS:  0000000000000000(0000) GS:ffff9cd2b7600000(0000) knlGS:0000000000000000
	[  241.123831][   T45] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
	[  241.125003][   T45] CR2: 00007fbb76b1a738 CR3: 0000000109c26001 CR4: 0000000000170ee0
	[  241.126226][   T45] Call Trace:
	[  241.126646][   T45]  <TASK>
	[  241.127165][   T45]  ? __bio_clone+0x1c0/0x1c0
	[  241.128354][   T45]  clean_io_failure+0x21a/0x260
	[  241.128384][   T45]  end_compressed_bio_read+0x2a9/0x470
	[  241.128411][   T45]  bio_endio+0x361/0x3c0
	[  241.128427][   T45]  rbio_orig_end_io+0x127/0x1c0
	[  241.128447][   T45]  __raid_recover_end_io+0x405/0x8f0
	[  241.128477][   T45]  raid_recover_end_io_work+0x8c/0xb0
	[  241.128494][   T45]  process_one_work+0x4e5/0xaa0
	[  241.128528][   T45]  worker_thread+0x32e/0x720
	[  241.128541][   T45]  ? _raw_spin_unlock_irqrestore+0x7d/0xa0
	[  241.128573][   T45]  ? process_one_work+0xaa0/0xaa0
	[  241.128588][   T45]  kthread+0x1ab/0x1e0
	[  241.128600][   T45]  ? kthread_complete_and_exit+0x40/0x40
	[  241.128628][   T45]  ret_from_fork+0x22/0x30
	[  241.128659][   T45]  </TASK>
	[  241.128667][   T45] Modules linked in:
	[  241.129700][   T45] ---[ end trace 0000000000000000 ]---
	[  241.152310][   T45] RIP: 0010:repair_io_failure+0x359/0x4b0
	[  241.153328][   T45] Code: 2b e8 cb 12 79 ff 48 c7 c6 20 23 ac 85 48 c7 c7 00 b9 14 88 e8 d8 e3 72 ff 48 8d bd 48 ff ff ff e8 5c 7e 26 00 e9 f6 fd ff ff <0f> 0b e8 60 d1 5e 01 85 c0 74 cc 48 c
	7 c7 b0 1d 45 88 e8 d0 8e 98
	[  241.156882][   T45] RSP: 0018:ffffbca902487a08 EFLAGS: 00010246
	[  241.158103][   T45] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
	[  241.160072][   T45] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
	[  241.161984][   T45] RBP: ffffbca902487b00 R08: 0000000000000000 R09: 0000000000000000
	[  241.164067][   T45] R10: 0000000000000000 R11: 0000000000000000 R12: ffff9cd1b9da4000
	[  241.165979][   T45] R13: 0000000000000000 R14: ffffe60cc7589740 R15: ffff9cd1f45495e4
	[  241.167928][   T45] FS:  0000000000000000(0000) GS:ffff9cd2b7600000(0000) knlGS:0000000000000000
	[  241.169978][   T45] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
	[  241.171649][   T45] CR2: 00007fbb76b1a738 CR3: 0000000109c26001 CR4: 0000000000170ee0

KFENCE and UBSAN aren't reporting anything before the BUG_ON.

KCSAN complains about a lot of stuff as usual, including several issues
in the btrfs allocator, but it doesn't look like anything that would
mess with a bio.

	$ git log --no-walk --oneline FETCH_HEAD
	6130a25681d4 (kdave/for-next) Merge branch 'for-next-next-v5.20-20220804' into for-next-20220804

	repair_io_failure at fs/btrfs/extent_io.c:2350 (discriminator 1)
	 2345           u64 sector;
	 2346           struct btrfs_io_context *bioc = NULL;
	 2347           int ret = 0;
	 2348   
	 2349           ASSERT(!(fs_info->sb->s_flags & SB_RDONLY));
	>2350<          BUG_ON(!mirror_num);
	 2351   
	 2352           if (btrfs_repair_one_zone(fs_info, logical))
	 2353                   return 0;
	 2354   
	 2355           map_length = length;

             reply	other threads:[~2022-08-09  3:32 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-09  3:31 Zygo Blaxell [this message]
2022-08-09  4:36 ` misc-next and for-next: kernel BUG at fs/btrfs/extent_io.c:2350! during raid5 recovery Qu Wenruo
2022-08-09 19:46   ` Zygo Blaxell
2022-08-10  7:17     ` Qu Wenruo
2022-08-14  4:52     ` Qu Wenruo
2022-08-16  1:01       ` Zygo Blaxell
2022-08-16  1:25         ` Qu Wenruo
2022-08-09  7:35 ` Qu Wenruo
2022-08-09 19:29   ` Zygo Blaxell
2022-08-09 21:50     ` Qu Wenruo
2022-08-10  8:08       ` Goffredo Baroncelli
2022-08-10  8:24         ` Qu Wenruo
2022-08-10  8:45           ` Goffredo Baroncelli
2022-08-10  9:14             ` Qu Wenruo
2022-08-09  8:29 ` Christoph Hellwig
2022-08-09 19:24   ` Zygo Blaxell
2022-08-12  2:58     ` Wang Yugui
2022-08-12 22:47       ` Wang Yugui
2022-08-13  1:50     ` Qu Wenruo

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=YvHVJ8t5vzxH9fS9@hungrycats.org \
    --to=ce3g8jdj@umail.furryterror.org \
    --cc=linux-btrfs@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