Josef Bacik
fca3a45d08
btrfs: fix min reserved size calculation in merge_reloc_root
...
The minimum reserve size was adjusted to take into account the height of
the tree we are merging, however we can have a root with a level == 0.
What we want is root_level + 1 to get the number of nodes we may have to
cow. This fixes the enospc_debug warning pops with btrfs/101.
Nikolay: this fixes failures on btrfs/060 btrfs/062 btrfs/063 and
btrfs/195 That I was seeing, the call trace was:
[ 3680.515564] ------------[ cut here ]------------
[ 3680.515566] BTRFS: block rsv returned -28
[ 3680.515585] WARNING: CPU: 2 PID: 8339 at fs/btrfs/block-rsv.c:521 btrfs_use_block_rsv+0x162/0x180
[ 3680.515587] Modules linked in:
[ 3680.515591] CPU: 2 PID: 8339 Comm: btrfs Tainted: G W 5.9.0-rc8-default #95
[ 3680.515593] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1ubuntu1 04/01/2014
[ 3680.515595] RIP: 0010:btrfs_use_block_rsv+0x162/0x180
[ 3680.515600] RSP: 0018:ffffa01ac9753910 EFLAGS: 00010282
[ 3680.515602] RAX: 0000000000000000 RBX: ffff984b34200000 RCX: 0000000000000027
[ 3680.515604] RDX: 0000000000000027 RSI: 0000000000000000 RDI: ffff984b3bd19e28
[ 3680.515606] RBP: 0000000000004000 R08: ffff984b3bd19e20 R09: 0000000000000001
[ 3680.515608] R10: 0000000000000004 R11: 0000000000000046 R12: ffff984b264fdc00
[ 3680.515609] R13: ffff984b13149000 R14: 00000000ffffffe4 R15: ffff984b34200000
[ 3680.515613] FS: 00007f4e2912b8c0(0000) GS:ffff984b3bd00000(0000) knlGS:0000000000000000
[ 3680.515615] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 3680.515617] CR2: 00007fab87122150 CR3: 0000000118e42000 CR4: 00000000000006e0
[ 3680.515620] Call Trace:
[ 3680.515627] btrfs_alloc_tree_block+0x8b/0x340
[ 3680.515633] ? __lock_acquire+0x51a/0xac0
[ 3680.515646] alloc_tree_block_no_bg_flush+0x4f/0x60
[ 3680.515651] __btrfs_cow_block+0x14e/0x7e0
[ 3680.515662] btrfs_cow_block+0x144/0x2c0
[ 3680.515670] merge_reloc_root+0x4d4/0x610
[ 3680.515675] ? btrfs_lookup_fs_root+0x78/0x90
[ 3680.515686] merge_reloc_roots+0xee/0x280
[ 3680.515695] relocate_block_group+0x2ce/0x5e0
[ 3680.515704] btrfs_relocate_block_group+0x16e/0x310
[ 3680.515711] btrfs_relocate_chunk+0x38/0xf0
[ 3680.515716] btrfs_shrink_device+0x200/0x560
[ 3680.515728] btrfs_rm_device+0x1ae/0x6a6
[ 3680.515744] ? _copy_from_user+0x6e/0xb0
[ 3680.515750] btrfs_ioctl+0x1afe/0x28c0
[ 3680.515755] ? find_held_lock+0x2b/0x80
[ 3680.515760] ? do_user_addr_fault+0x1f8/0x418
[ 3680.515773] ? __x64_sys_ioctl+0x77/0xb0
[ 3680.515775] __x64_sys_ioctl+0x77/0xb0
[ 3680.515781] do_syscall_64+0x31/0x70
[ 3680.515785] entry_SYSCALL_64_after_hwframe+0x44/0xa9
Reported-by: Nikolay Borisov <nborisov@suse.com>
Fixes: 44d354abf33e ("btrfs: relocation: review the call sites which can be interrupted by signal")
CC: stable@vger.kernel.org # 5.4+
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2020-11-05 13:02:07 +01:00
..
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-08-31 12:20:31 +02:00
2020-09-03 18:50:48 -07:00
2020-09-29 17:18:34 -07:00
2020-06-24 09:16:02 -06:00
2020-11-05 13:02:07 +01:00
2020-07-08 08:27:56 +02:00
2020-08-28 10:33:04 -07:00
2020-09-06 23:59:53 -05:00
2020-08-23 17:36:59 -05:00
2020-08-07 11:33:22 -07:00
2020-09-04 18:12:52 +02:00
2020-08-23 17:36:59 -05:00
2020-08-07 11:33:22 -07:00
2020-07-09 10:14:29 +03:00
2020-06-24 09:16:02 -06:00
2020-08-23 17:36:59 -05:00
2020-08-12 08:31:13 +09:00
2020-09-05 10:00:05 -07:00
2020-08-28 10:57:14 -07:00
2020-09-08 20:31:33 -07:00
2020-08-12 10:58:01 -07:00
2020-06-03 16:27:18 -07:00
2020-09-17 17:26:56 -04:00
2020-08-28 10:41:00 -07:00
2020-06-24 09:16:02 -06:00
2020-08-23 17:36:59 -05:00
2020-06-06 10:08:17 -07:00
2020-08-12 10:57:56 -07:00
2020-08-23 17:36:59 -05:00
2020-08-04 13:49:43 -07:00
2020-08-19 12:04:35 -04:00
2020-08-23 17:36:59 -05:00
2020-06-24 09:16:02 -06:00
2020-07-27 23:15:48 +02:00
2020-08-12 10:58:00 -07:00
2020-09-18 09:25:33 -04:00
2020-08-23 17:36:59 -05:00
2020-08-25 18:01:36 -07:00
2020-08-23 17:36:59 -05:00
2020-06-14 01:57:21 +09:00
2020-08-23 17:36:59 -05:00
2020-08-07 11:33:21 -07:00
2020-08-23 17:36:59 -05:00
2020-07-16 12:35:15 -07:00
2020-08-04 15:01:58 -04:00
2020-08-04 13:49:43 -07:00
2020-08-12 10:57:56 -07:00
2020-08-23 17:36:59 -05:00
2020-06-02 10:59:07 -07:00
2020-08-23 17:36:59 -05:00
2020-08-06 19:28:26 -07:00
2020-08-21 09:52:53 -07:00
2020-08-21 09:52:53 -07:00
2020-06-05 14:05:57 -07:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-09-22 15:08:41 -07:00
2020-07-21 16:02:41 -07:00
2020-09-05 10:04:53 -07:00
2020-08-11 17:42:24 +09:00
2020-08-23 17:36:59 -05:00
2020-06-03 23:16:55 -04:00
2020-08-07 13:29:39 -07:00
2020-07-27 14:29:23 -04:00
2020-06-04 19:18:29 -07:00
2020-08-24 08:49:13 +10:00
2020-06-04 19:18:29 -07:00
2020-06-04 19:18:29 -07:00
2020-08-03 13:01:22 -07:00
2020-08-23 17:36:59 -05:00
2020-06-05 13:45:21 -07:00
2020-08-12 10:58:01 -07:00
2020-08-23 17:36:59 -05:00
2020-07-29 16:14:27 +02:00
2020-10-07 12:17:59 +02:00
2020-09-24 19:41:58 -04:00
2020-08-12 10:58:04 -07:00
2020-08-23 17:36:59 -05:00
2020-06-29 09:40:55 -07:00
2020-08-07 09:40:34 -07:00
2020-08-23 17:36:59 -05:00
2020-07-29 16:14:27 +02:00
2020-09-19 13:13:39 -07:00
2020-08-23 17:36:59 -05:00
2020-08-04 21:02:38 -04:00
2020-06-05 16:26:36 -07:00
2020-08-07 09:40:34 -07:00
2020-10-02 14:38:10 -07:00
2020-08-23 11:38:50 -06:00
2020-07-24 13:00:44 -06:00
2020-07-31 08:16:01 +02:00
2020-08-07 11:33:24 -07:00
2020-06-14 01:57:21 +09:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-07-31 08:17:51 +02:00
2020-06-02 10:59:07 -07:00
2020-08-14 19:56:56 -07:00
2020-08-07 21:03:25 -07:00
2020-08-12 10:58:01 -07:00
2020-10-01 19:14:36 -07:00
2020-06-08 11:04:19 -07:00
2020-06-04 13:54:34 -07:00
2020-09-29 17:18:34 -07:00
2020-07-31 08:16:00 +02:00
2020-05-29 19:10:42 -04:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2020-10-01 19:14:36 -07:00
2020-06-02 19:45:12 -07:00
2020-06-10 16:09:11 -07:00
2020-06-09 15:40:50 -07:00
2020-08-10 19:07:44 -07:00
2020-07-31 08:16:01 +02:00
2020-07-13 17:27:03 -04:00