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

Commit 315054f0 authored by Alex Tomas's avatar Alex Tomas Committed by Theodore Ts'o
Browse files

When ext4_ext_insert_extent() fails to insert new blocks



we should free just the allocated blocks.

Signed-off-by: default avatarAlex Tomas <alex@clusterfs.com>
Signed-off-by: default avatarMingming Cao <cmm@us.ibm.com>
Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
parent 25d14f98
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -2099,8 +2099,12 @@ int ext4_ext_get_blocks(handle_t *handle, struct inode *inode,
	ext4_ext_store_pblock(&newex, newblock);
	newex.ee_len = cpu_to_le16(allocated);
	err = ext4_ext_insert_extent(handle, inode, path, &newex);
	if (err)
	if (err) {
		/* free data blocks we just allocated */
		ext4_free_blocks(handle, inode, ext_pblock(&newex),
					le16_to_cpu(newex.ee_len));
		goto out2;
	}

	if (extend_disksize && inode->i_size > EXT4_I(inode)->i_disksize)
		EXT4_I(inode)->i_disksize = inode->i_size;