From: Darrick J. Wong Date: Mon, 15 Dec 2014 02:09:29 +0000 (-0500) Subject: resize2fs: use old_fs to detect per-bg metadata blocks to free X-Git-Tag: v1.43-WIP-2015-05-18~106 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8e98899b2ffc43f151a21afb5bad85e80d6b6d85;p=thirdparty%2Fe2fsprogs.git resize2fs: use old_fs to detect per-bg metadata blocks to free When shrinking a filesystem, resize2fs wants to free per-bg metadata blocks that are no longer needed. This behavior is gated on whether there's a superblock in the group as told by new_fs. The check really should be against old_fs, since we're effectively freeing blocks out of old_fs in the transition to new_fs, but prior to sparse_super2 this didn't matter since superblocks didn't move, so it didn't matter. Under sparse_super2, however, there's a superblock in the last group, so now we need to change the test to use old_fs as it should. Signed-off-by: Darrick J. Wong Signed-off-by: Theodore Ts'o --- diff --git a/resize/resize2fs.c b/resize/resize2fs.c index 1415244fc..da1ec9cfa 100644 --- a/resize/resize2fs.c +++ b/resize/resize2fs.c @@ -1042,7 +1042,7 @@ static errcode_t blocks_to_move(ext2_resize_t rfs) } for (i = 0; i < max_groups; i++) { - if (!ext2fs_bg_has_super(fs, i)) { + if (!ext2fs_bg_has_super(old_fs, i)) { group_blk += fs->super->s_blocks_per_group; continue; }