summaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorLukas Czerner <lczerner@redhat.com>2012-02-20 23:02:06 -0500
committerTheodore Ts'o <tytso@mit.edu>2012-02-20 23:02:06 -0500
commita0ade1deb86d2325aecc36272bb4505a6eec9235 (patch)
tree863f896ae46280dbcbbe5c31e9a3d2988c14c1fb /arch/mips
parent266991b13890049ee1a6bb95b9817f06339ee3d7 (diff)
downloadop-kernel-dev-a0ade1deb86d2325aecc36272bb4505a6eec9235.zip
op-kernel-dev-a0ade1deb86d2325aecc36272bb4505a6eec9235.tar.gz
ext4: fix resize when resizing within single group
When resizing file system in the way that the new size of the file system is still in the same group (no new groups are added), then we can hit a BUG_ON in ext4_alloc_group_tables() BUG_ON(flex_gd->count == 0 || group_data == NULL); because flex_gd->count is zero. The reason is the missing check for such case, so the code always extend the last group fully and then attempt to add more groups, but at that time n_blocks_count is actually smaller than o_blocks_count. It can be easily reproduced like this: mkfs.ext4 -b 4096 /dev/sda 30M mount /dev/sda /mnt/test resize2fs /dev/sda 50M Fix this by checking whether the resize happens within the singe group and only add that many blocks into the last group to satisfy user request. Then o_blocks_count == n_blocks_count and the resize will exit successfully without and attempt to add more groups into the fs. Also fix mixing together block number and blocks count which might be confusing and can easily lead to off-by-one errors (but it is actually not the case here since the two occurrence of this mix-up will cancel each other). Signed-off-by: Lukas Czerner <lczerner@redhat.com> Reported-by: Milan Broz <mbroz@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'arch/mips')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud