btrfs: correctly calculate delayed ref bytes when starting transaction
authorFilipe Manana <fdmanana@suse.com>
Thu, 30 Mar 2023 14:39:03 +0000 (15:39 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Apr 2023 16:01:22 +0000 (18:01 +0200)
commit0f69d1f4d62444bc1e7bdbcbea7c646ddcc35a58
treebe4ce898726dfab377d98f84a20159a55a7f941d
parente4773b57b8949cec8743445e7877315c012fe5ca
btrfs: correctly calculate delayed ref bytes when starting transaction

When starting a transaction, we are assuming the number of bytes used for
each delayed ref update matches the number of bytes used for each item
update, that is the return value of:

   btrfs_calc_insert_metadata_size(fs_info, num_items)

However that is not correct when we are using the free space tree, as we
need to multiply that value by 2, since delayed ref updates need to modify
the free space tree besides the extent tree.

So fix this by using btrfs_calc_delayed_ref_bytes() to get the correct
number of bytes used for delayed ref updates.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/transaction.c