All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] btrfs: do not BUG_ON(ret) in link_to_fixup_dir
@ 2021-05-14 14:56 Josef Bacik
  2021-05-17 12:34 ` David Sterba
  0 siblings, 1 reply; 2+ messages in thread
From: Josef Bacik @ 2021-05-14 14:56 UTC (permalink / raw)
  To: linux-btrfs, kernel-team

While doing error injection testing I got the following panic

------------[ cut here ]------------
kernel BUG at fs/btrfs/tree-log.c:1862!
invalid opcode: 0000 [#1] SMP NOPTI
CPU: 1 PID: 7836 Comm: mount Not tainted 5.13.0-rc1+ #305
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
RIP: 0010:link_to_fixup_dir+0xd5/0xe0
RSP: 0018:ffffb5800180fa30 EFLAGS: 00010216
RAX: fffffffffffffffb RBX: 00000000fffffffb RCX: ffff8f595287faf0
RDX: ffffb5800180fa37 RSI: ffff8f5954978800 RDI: 0000000000000000
RBP: ffff8f5953af9450 R08: 0000000000000019 R09: 0000000000000001
R10: 000151f408682970 R11: 0000000120021001 R12: ffff8f5954978800
R13: ffff8f595287faf0 R14: ffff8f5953c77dd0 R15: 0000000000000065
FS:  00007fc5284c8c40(0000) GS:ffff8f59bbd00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fc5287f47c0 CR3: 000000011275e002 CR4: 0000000000370ee0
Call Trace:
 replay_one_buffer+0x409/0x470
 ? btree_read_extent_buffer_pages+0xd0/0x110
 walk_up_log_tree+0x157/0x1e0
 walk_log_tree+0xa6/0x1d0
 btrfs_recover_log_trees+0x1da/0x360
 ? replay_one_extent+0x7b0/0x7b0
 open_ctree+0x1486/0x1720
 btrfs_mount_root.cold+0x12/0xea
 ? __kmalloc_track_caller+0x12f/0x240
 legacy_get_tree+0x24/0x40
 vfs_get_tree+0x22/0xb0
 vfs_kern_mount.part.0+0x71/0xb0
 btrfs_mount+0x10d/0x380
 ? vfs_parse_fs_string+0x4d/0x90
 legacy_get_tree+0x24/0x40
 vfs_get_tree+0x22/0xb0
 path_mount+0x433/0xa10
 __x64_sys_mount+0xe3/0x120
 do_syscall_64+0x3d/0x80
 entry_SYSCALL_64_after_hwframe+0x44/0xae

We can get -EIO or any number of legitimate errors from
btrfs_search_slot(), panicing here is not the appropriate response.  The
error path for this code handles errors properly, simply return the
error.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
---
 fs/btrfs/tree-log.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index 14ec61048483..326be57f2828 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -1858,8 +1858,6 @@ static noinline int link_to_fixup_dir(struct btrfs_trans_handle *trans,
 		ret = btrfs_update_inode(trans, root, BTRFS_I(inode));
 	} else if (ret == -EEXIST) {
 		ret = 0;
-	} else {
-		BUG(); /* Logic Error */
 	}
 	iput(inode);
 
-- 
2.26.3


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] btrfs: do not BUG_ON(ret) in link_to_fixup_dir
  2021-05-14 14:56 [PATCH] btrfs: do not BUG_ON(ret) in link_to_fixup_dir Josef Bacik
@ 2021-05-17 12:34 ` David Sterba
  0 siblings, 0 replies; 2+ messages in thread
From: David Sterba @ 2021-05-17 12:34 UTC (permalink / raw)
  To: Josef Bacik; +Cc: linux-btrfs, kernel-team

On Fri, May 14, 2021 at 10:56:16AM -0400, Josef Bacik wrote:
> While doing error injection testing I got the following panic
> 
> ------------[ cut here ]------------
> kernel BUG at fs/btrfs/tree-log.c:1862!
> invalid opcode: 0000 [#1] SMP NOPTI
> CPU: 1 PID: 7836 Comm: mount Not tainted 5.13.0-rc1+ #305
> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-2.fc32 04/01/2014
> RIP: 0010:link_to_fixup_dir+0xd5/0xe0
> RSP: 0018:ffffb5800180fa30 EFLAGS: 00010216
> RAX: fffffffffffffffb RBX: 00000000fffffffb RCX: ffff8f595287faf0
> RDX: ffffb5800180fa37 RSI: ffff8f5954978800 RDI: 0000000000000000
> RBP: ffff8f5953af9450 R08: 0000000000000019 R09: 0000000000000001
> R10: 000151f408682970 R11: 0000000120021001 R12: ffff8f5954978800
> R13: ffff8f595287faf0 R14: ffff8f5953c77dd0 R15: 0000000000000065
> FS:  00007fc5284c8c40(0000) GS:ffff8f59bbd00000(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007fc5287f47c0 CR3: 000000011275e002 CR4: 0000000000370ee0
> Call Trace:
>  replay_one_buffer+0x409/0x470
>  ? btree_read_extent_buffer_pages+0xd0/0x110
>  walk_up_log_tree+0x157/0x1e0
>  walk_log_tree+0xa6/0x1d0
>  btrfs_recover_log_trees+0x1da/0x360
>  ? replay_one_extent+0x7b0/0x7b0
>  open_ctree+0x1486/0x1720
>  btrfs_mount_root.cold+0x12/0xea
>  ? __kmalloc_track_caller+0x12f/0x240
>  legacy_get_tree+0x24/0x40
>  vfs_get_tree+0x22/0xb0
>  vfs_kern_mount.part.0+0x71/0xb0
>  btrfs_mount+0x10d/0x380
>  ? vfs_parse_fs_string+0x4d/0x90
>  legacy_get_tree+0x24/0x40
>  vfs_get_tree+0x22/0xb0
>  path_mount+0x433/0xa10
>  __x64_sys_mount+0xe3/0x120
>  do_syscall_64+0x3d/0x80
>  entry_SYSCALL_64_after_hwframe+0x44/0xae
> 
> We can get -EIO or any number of legitimate errors from
> btrfs_search_slot(), panicing here is not the appropriate response.  The
> error path for this code handles errors properly, simply return the
> error.
> 
> Signed-off-by: Josef Bacik <josef@toxicpanda.com>

Added do misc-next, thanks.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-05-17 12:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-14 14:56 [PATCH] btrfs: do not BUG_ON(ret) in link_to_fixup_dir Josef Bacik
2021-05-17 12:34 ` David Sterba

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.