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. Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxxxx> --- v1->v2: - Add detail explanation of effect to changelog. fs/ext2/balloc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c index e0cc55164505..29fc3a5054f8 100644 --- a/fs/ext2/balloc.c +++ b/fs/ext2/balloc.c @@ -736,7 +736,6 @@ ext2_try_to_allocate(struct super_block *sb, int group, *count = num; return grp_goal - num; fail_access: - *count = num; return -1; } -- 2.21.0