And here's the short-term fix. With this patch, e2fsprogs will work on ext4 filesystems with flex_bg. Interested in working on the long-term fix, where we put all or most of the resizing logic in the kernel? :-) - Ted commit df3871a168c3f8308718d72a17062a20aa02cc01 Author: Theodore Ts'o <tytso@xxxxxxx> Date: Thu Aug 28 13:24:12 2008 -0400 resize2fs: Allow (non-optimal) on-line resizing for ext4 filesystems The current method of adding one block group at a time to a mounted filesystem means it is impossible to accomodate the flex_bg allocation method of placing the metadata together in a single block group. For now we "fix" this issue by using the traditional layout for new block groups, where each block group is self-contained and contains its own bitmap blocks and inode tables. This means we don't get the layout advantages of flex_bg in the new block groups, but at least it allows on-line resizing to function. Long term, we will need to create a new ioctl which does much more of the resizing work in the kernel. We also fix a bug in the ext3/ext4 ioctl fallback code so we stop trying the ext3 ioctl for every single block group when resizing an ext4 filesystem. Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> diff --git a/resize/online.c b/resize/online.c index f4d24ce..d581553 100644 --- a/resize/online.c +++ b/resize/online.c @@ -93,6 +93,17 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt, if (retval) return retval; + /* The current method of adding one block group at a time to a + * mounted filesystem means it is impossible to accomodate the + * flex_bg allocation method of placing the metadata together + * in a single block group. For now we "fix" this issue by + * using the traditional layout for new block groups, where + * each block group is self-contained and contains its own + * bitmap blocks and inode tables. This means we don't get + * the layout advantages of flex_bg in the new block groups, + * but at least it allows on-line resizing to function. + */ + new_fs->super->s_feature_incompat &= ~EXT4_FEATURE_INCOMPAT_FLEX_BG; retval = adjust_fs_info(new_fs, fs, *new_size); if (retval) return retval; @@ -154,7 +165,7 @@ errcode_t online_resize_fs(ext2_filsys fs, const char *mtpt, ioctl(fd, EXT2_IOC_GROUP_ADD, &input) == 0) continue; else - use_old_ioctl = 1; + use_old_ioctl = 0; input64.group = input.group; input64.block_bitmap = input.block_bitmap; -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html