Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98397ff3 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

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: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent ead43275
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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)