Chao Yu
1c20a48964
f2fs: fix panic during f2fs_resize_fs()
...
[ Upstream commit 3ab0598e6d860ef49d029943ba80f627c15c15d6 ]
f2fs_resize_fs() hangs in below callstack with testcase:
- mkfs 16GB image & mount image
- dd 8GB fileA
- dd 8GB fileB
- sync
- rm fileA
- sync
- resize filesystem to 8GB
kernel BUG at segment.c:2484!
Call Trace:
allocate_segment_by_default+0x92/0xf0 [f2fs]
f2fs_allocate_data_block+0x44b/0x7e0 [f2fs]
do_write_page+0x5a/0x110 [f2fs]
f2fs_outplace_write_data+0x55/0x100 [f2fs]
f2fs_do_write_data_page+0x392/0x850 [f2fs]
move_data_page+0x233/0x320 [f2fs]
do_garbage_collect+0x14d9/0x1660 [f2fs]
free_segment_range+0x1f7/0x310 [f2fs]
f2fs_resize_fs+0x118/0x330 [f2fs]
__f2fs_ioctl+0x487/0x3680 [f2fs]
__x64_sys_ioctl+0x8e/0xd0
do_syscall_64+0x33/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xa9
The root cause is we forgot to check that whether we have enough space
in resized filesystem to store all valid blocks in before-resizing
filesystem, then allocator will run out-of-space during block migration
in free_segment_range().
Fixes: b4b10061ef
("f2fs: refactor resize_fs to avoid meta updates in progress")
Signed-off-by: Chao Yu <yuchao0@huawei.com >
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2021-05-19 10:13:00 +02:00
..
2020-12-01 21:40:47 +01:00
2020-10-24 12:26:05 -07:00
2021-03-04 11:38:37 +01:00
2021-05-14 09:50:45 +02:00
2020-10-16 11:11:22 -07:00
2020-09-18 16:45:50 -04:00
2021-01-06 14:56:52 +01:00
2021-05-11 14:47:33 +02:00
2021-03-30 14:32:07 +02:00
2021-03-04 11:38:08 +01:00
2021-05-11 14:47:37 +02:00
2021-03-17 17:06:34 +01:00
2020-09-18 16:45:50 -04:00
2020-12-26 16:02:43 +01:00
2021-03-04 11:37:17 +01:00
2021-05-19 10:12:52 +02:00
2021-05-11 14:47:12 +02:00
2020-11-25 16:55:02 +01:00
2020-09-18 16:45:50 -04:00
2021-05-11 14:47:13 +02:00
2021-05-11 14:47:36 +02:00
2020-10-24 12:26:05 -07:00
2021-05-11 14:47:38 +02:00
2021-05-19 10:13:00 +02:00
2020-09-18 16:45:50 -04:00
2020-06-03 16:27:18 -07:00
2021-05-19 10:12:56 +02:00
2021-04-16 11:43:20 +02:00
2020-10-29 17:22:59 -05:00
2020-10-29 17:22:59 -05:00
2021-04-14 08:42:06 +02:00
2020-09-18 16:45:50 -04:00
2021-02-10 09:29:20 +01:00
2021-04-07 15:00:04 +02:00
2021-03-04 11:38:00 +01:00
2021-05-11 14:47:37 +02:00
2021-05-11 14:47:36 +02:00
2021-03-07 12:34:04 +01:00
2021-01-27 11:55:29 +01:00
2020-12-30 11:53:30 +01:00
2020-09-18 16:45:50 -04:00
2021-05-11 14:47:34 +02:00
2020-12-30 11:53:45 +01:00
2021-05-14 09:50:13 +02:00
2021-02-13 13:55:16 +01:00
2020-06-14 01:57:21 +09:00
2021-01-17 14:16:59 +01:00
2021-02-26 10:13:00 +01:00
2021-04-14 08:41:58 +02:00
2020-09-22 23:39:45 -04:00
2020-08-04 15:01:58 -04:00
2021-05-14 09:50:35 +02:00
2021-05-14 09:50:24 +02:00
2021-03-25 09:04:08 +01:00
2020-09-18 16:45:50 -04:00
2020-09-18 16:45:50 -04:00
2021-03-04 11:37:53 +01:00
2020-10-16 11:11:22 -07:00
2021-04-07 15:00:10 +02:00
2020-10-24 12:26:05 -07:00
2021-03-30 14:31:54 +02:00
2020-10-02 12:02:30 +02:00
2020-09-18 16:45:50 -04:00
2021-05-11 14:47:33 +02:00
2021-03-17 17:06:23 +01:00
2020-10-24 12:26:05 -07:00
2020-09-10 14:03:31 -07:00
2020-10-15 15:11:56 -07:00
2020-07-21 16:02:41 -07:00
2021-05-14 09:50:34 +02:00
2021-03-25 09:04:05 +01:00
2020-11-10 16:53:07 -08:00
2020-06-03 23:16:55 -04:00
2020-10-16 11:11:21 -07:00
2020-10-29 17:22:59 -05:00
2020-06-04 19:18:29 -07:00
2020-08-24 08:49:13 +10:00
2021-03-17 17:06:35 +01:00
2020-06-04 19:18:29 -07:00
2021-04-16 11:43:21 +02:00
2020-10-18 09:27:09 -07:00
2020-06-05 13:45:21 -07:00
2020-12-06 10:19:07 -08:00
2020-10-14 14:54:45 -07:00
2021-02-26 10:13:01 +01:00
2020-07-29 16:14:27 +02:00
2021-04-14 08:41:58 +02:00
2021-05-11 14:47:12 +02:00
2021-01-09 13:46:24 +01:00
2021-01-06 14:56:53 +01:00
2020-10-17 15:05:30 -06:00
2021-01-30 13:55:18 +01:00
2020-08-23 17:36:59 -05:00
2020-10-13 18:38:27 -07:00
2020-07-29 16:14:27 +02:00
2021-01-27 11:54:53 +01:00
2020-08-23 17:36:59 -05:00
2020-08-04 21:02:38 -04:00
2020-12-30 11:53:49 +01:00
2020-09-22 23:45:57 -04:00
2021-05-14 09:50:28 +02:00
2021-02-13 13:54:56 +01:00
2021-02-13 13:54:56 +01:00
2020-07-31 08:16:01 +02:00
2021-02-17 11:02:21 +01:00
2020-06-14 01:57:21 +09:00
2020-10-05 13:37:04 +02:00
2020-11-22 10:48:22 -08:00
2021-03-20 10:43:44 +01:00
2020-10-23 11:33:41 -07:00
2020-06-02 10:59:07 -07:00
2021-04-14 08:41:58 +02:00
2021-01-19 18:27:32 +01:00
2020-12-30 11:54:24 +01:00
2021-01-27 11:55:29 +01:00
2021-03-17 17:06:13 +01:00
2020-06-08 11:04:19 -07:00
2020-12-30 11:54:02 +01:00
2020-10-23 11:33:41 -07:00
2021-04-21 13:00:54 +02:00
2020-10-15 09:48:49 -07:00
2021-03-25 09:04:16 +01:00
2020-11-15 22:12:53 -05:00
2020-08-23 17:36:59 -05:00
2020-10-24 12:40:18 -07:00
2021-05-11 14:47:33 +02:00
2020-08-27 16:06:47 -04:00
2020-11-10 16:53:11 -08:00
2020-06-09 15:40:50 -07:00
2020-10-16 11:11:22 -07:00
2020-07-31 08:16:01 +02:00
2020-10-13 18:38:27 -07:00