Skip to content

Commit ca74ecf

Browse files
Lukas Czernertytso
Lukas Czerner
authored andcommitted
libext2fs: skip start_blk adjustment when stride and flex_bg is set
Currently some stride optimization is done in ext2fs_allocate_group_table() by adjusting start_blk block where we start allocating block, or inode bitmaps. However in flex_bg case this is currently useless since the values are going to be overridden anyway. Moreover in flex_bg case the group might already be full and the stride optimization will fail. As a result file system resize might fail needlessly in some situations. It can be shown by this example: mke2fs -b 1024 -i 1024 -E stride=8192 -t ext4 /dev/loop0 1024000 resize2fs /dev/loop0 102400000 resize2fs 1.43.5 (04-Aug-2017) Resizing the filesystem on /dev/loop0 to 102400000 (1k) blocks. ./resize/resize2fs: Could not allocate block in ext2 filesystem while trying to resize /dev/loop0 Please run 'e2fsck -fy /dev/loop0' to fix the filesystem after the aborted resize operation. Fix this by not doing the stride adjustment in case of flex_bg. Signed-off-by: Lukas Czerner <lczerner@redhat.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 0c12896 commit ca74ecf

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

lib/ext2fs/alloc_tables.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ errcode_t ext2fs_allocate_group_table(ext2_filsys fs, dgrp_t group,
107107
/*
108108
* Allocate the block and inode bitmaps, if necessary
109109
*/
110-
if (fs->stride) {
110+
if (fs->stride && !flexbg_size) {
111111
retval = ext2fs_get_free_blocks2(fs, group_blk, last_blk,
112112
1, bmap, &start_blk);
113113
if (retval)

0 commit comments

Comments
 (0)