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

Commit 3c082b7b authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: do f2fs_balance_fs when block is allocated



We should consider data block allocation to trigger f2fs_balance_fs.

Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 6e17bfbc
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -542,7 +542,7 @@ static int __allocate_data_blocks(struct inode *inode, loff_t offset,
	struct dnode_of_data dn;
	u64 start = F2FS_BYTES_TO_BLK(offset);
	u64 len = F2FS_BYTES_TO_BLK(count);
	bool allocated;
	bool allocated = false;
	u64 end_offset;
	int err = 0;

@@ -584,7 +584,7 @@ static int __allocate_data_blocks(struct inode *inode, loff_t offset,
		f2fs_put_dnode(&dn);
		f2fs_unlock_op(sbi);

		f2fs_balance_fs(sbi, dn.node_changed);
		f2fs_balance_fs(sbi, allocated);
	}
	return err;

@@ -594,7 +594,7 @@ static int __allocate_data_blocks(struct inode *inode, loff_t offset,
	f2fs_put_dnode(&dn);
out:
	f2fs_unlock_op(sbi);
	f2fs_balance_fs(sbi, dn.node_changed);
	f2fs_balance_fs(sbi, allocated);
	return err;
}

@@ -688,14 +688,14 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
	if (dn.ofs_in_node >= end_offset) {
		if (allocated)
			sync_inode_page(&dn);
		allocated = false;
		f2fs_put_dnode(&dn);

		if (create) {
			f2fs_unlock_op(sbi);
			f2fs_balance_fs(sbi, dn.node_changed);
			f2fs_balance_fs(sbi, allocated);
			f2fs_lock_op(sbi);
		}
		allocated = false;

		set_new_dnode(&dn, inode, NULL, NULL, 0);
		err = get_dnode_of_data(&dn, pgofs, mode);
@@ -753,7 +753,7 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map,
unlock_out:
	if (create) {
		f2fs_unlock_op(sbi);
		f2fs_balance_fs(sbi, dn.node_changed);
		f2fs_balance_fs(sbi, allocated);
	}
out:
	trace_f2fs_map_blocks(inode, map, err);