mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 06:31:49 +00:00
f2fs: fix not to allocate unnecessary blocks during fallocate
This patch fixes the fallocate bug like below. (See xfstests/255) In fallocate(fd, 0, 20480), expand_inode_data processes for (index = pg_start; index <= pg_end; index++) { f2fs_reserve_block(); ... } So, even though fallocate requests 20480, 5 blocks, f2fs allocates 6 blocks including pg_end. So, this patch adds one condition to avoid block allocation. Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
ead432756a
commit
98397ff3cd
@ -664,11 +664,14 @@ static int expand_inode_data(struct inode *inode, loff_t offset,
|
||||
for (index = pg_start; index <= pg_end; index++) {
|
||||
struct dnode_of_data dn;
|
||||
|
||||
if (index == pg_end && !off_end)
|
||||
goto noalloc;
|
||||
|
||||
set_new_dnode(&dn, inode, NULL, NULL, 0);
|
||||
ret = f2fs_reserve_block(&dn, index);
|
||||
if (ret)
|
||||
break;
|
||||
|
||||
noalloc:
|
||||
if (pg_start == pg_end)
|
||||
new_size = offset + len;
|
||||
else if (index == pg_start && off_start)
|
||||
|
Loading…
Reference in New Issue
Block a user