ext4: simplify calculation of blocks to free on error
In ext4_ext_map_blocks(), if we have successfully allocated the data blocks, but then run into trouble inserting the extent into the extent tree, most likely due to an ENOSPC condition, determine the arguments to ext4_free_blocks() in a simpler way which is easier to prove to be correct. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
This commit is contained in:
parent
8acd5e9b12
commit
c8e15130e1
|
@ -4261,8 +4261,8 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode,
|
||||||
/* not a good idea to call discard here directly,
|
/* not a good idea to call discard here directly,
|
||||||
* but otherwise we'd need to call it every free() */
|
* but otherwise we'd need to call it every free() */
|
||||||
ext4_discard_preallocations(inode);
|
ext4_discard_preallocations(inode);
|
||||||
ext4_free_blocks(handle, inode, NULL, ext4_ext_pblock(&newex),
|
ext4_free_blocks(handle, inode, NULL, newblock,
|
||||||
ext4_ext_get_actual_len(&newex), fb_flags);
|
EXT4_C2B(sbi, allocated_clusters), fb_flags);
|
||||||
goto out2;
|
goto out2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue