ext2: don't set *count in the case of failure in ext2_try_to_allocate()
authorChengguang Xu <cgxu519@mykernel.net>
Sat, 26 Oct 2019 09:07:21 +0000 (17:07 +0800)
committerJan Kara <jack@suse.cz>
Thu, 31 Oct 2019 14:40:44 +0000 (15:40 +0100)
Currently we set *count to num(value 0) in the failure
of block allocation in ext2_try_to_allocate(). Without
reservation, we reuse *count(value 0) to retry block
allocation and wrong *count will cause only allocating
maximum 1 block even though having sufficent free blocks
in that block group. Finally, it probably cause significant
fragmentation.

Link: https://lore.kernel.org/r/20191026090721.23794-1-cgxu519@mykernel.net
Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext2/balloc.c

index 4664d324567c0785a87b6484be8ae8a76f1a93e4..19bce75d207b46a410e51c2bee71da35edf8e81a 100644 (file)
@@ -736,7 +736,6 @@ repeat:
        *count = num;
        return grp_goal - num;
 fail_access:
-       *count = num;
        return -1;
 }