ext2: dump current reservation window info
authorYe Bin <yebin10@huawei.com>
Tue, 15 Aug 2023 11:26:12 +0000 (19:26 +0800)
committerJan Kara <jack@suse.cz>
Wed, 16 Aug 2023 15:49:47 +0000 (17:49 +0200)
There's report BUG in 'ext2_try_to_allocate_with_rsv()', although there's
now dump of all reservation windows information. But there's unknown which
window is being processed.So this is not helpful for locating the issue.
To better analyze the problem, dump the information about reservation window
that is being processed. And just bail with error instead of BUG here.

Signed-off-by: Ye Bin <yebin10@huawei.com>
Message-Id: <20230815112612.221145-5-yebin10@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext2/balloc.c

index dd74c77a4ac1deed750f567080c3f018ae19ecd9..424b277f31ff23ad029d536ba3eb5baab44ed22c 100644 (file)
@@ -1133,8 +1133,13 @@ ext2_try_to_allocate_with_rsv(struct super_block *sb, unsigned int group,
 
                if ((my_rsv->rsv_start > group_last_block) ||
                                (my_rsv->rsv_end < group_first_block)) {
+                       ext2_error(sb, __func__,
+                                  "Reservation out of group %u range goal %d fsb[%lu,%lu] rsv[%lu, %lu]",
+                                  group, grp_goal, group_first_block,
+                                  group_last_block, my_rsv->rsv_start,
+                                  my_rsv->rsv_end);
                        rsv_window_dump(&EXT2_SB(sb)->s_rsv_window_root, 1);
-                       BUG();
+                       return -1;
                }
                ret = ext2_try_to_allocate(sb, group, bitmap_bh, grp_goal,
                                           &num, &my_rsv->rsv_window);