Btrfs: fix truncate_space_check
truncate_space_check is using btrfs_csum_bytes_to_leaves() but forgetting to multiply by nodesize so we get an actual byte count. We need a tracepoint here so that we have the matching reserve for the release that will come later. Also add a comment to make clear what the intent of truncate_space_check is. Signed-off-by: Josef Bacik <jbacik@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
fb4b10e5d5
commit
dc95f7bfc5
|
@ -4211,11 +4211,20 @@ static int truncate_space_check(struct btrfs_trans_handle *trans,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is only used to apply pressure to the enospc system, we don't
|
||||||
|
* intend to use this reservation at all.
|
||||||
|
*/
|
||||||
bytes_deleted = btrfs_csum_bytes_to_leaves(root, bytes_deleted);
|
bytes_deleted = btrfs_csum_bytes_to_leaves(root, bytes_deleted);
|
||||||
|
bytes_deleted *= root->nodesize;
|
||||||
ret = btrfs_block_rsv_add(root, &root->fs_info->trans_block_rsv,
|
ret = btrfs_block_rsv_add(root, &root->fs_info->trans_block_rsv,
|
||||||
bytes_deleted, BTRFS_RESERVE_NO_FLUSH);
|
bytes_deleted, BTRFS_RESERVE_NO_FLUSH);
|
||||||
if (!ret)
|
if (!ret) {
|
||||||
|
trace_btrfs_space_reservation(root->fs_info, "transaction",
|
||||||
|
trans->transid,
|
||||||
|
bytes_deleted, 1);
|
||||||
trans->bytes_reserved += bytes_deleted;
|
trans->bytes_reserved += bytes_deleted;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue