Commit 3bae13e9 authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba

btrfs: do not BUG_ON() on failure to reserve metadata for delayed item

At btrfs_insert_delayed_dir_index(), we don't expect the metadata
reservation for the delayed dir index item insertion to fail, because the
caller is supposed to have reserved 1 unit of metadata space for that.
All callers are able to deal with an error in case that happens, so there
is no need for something so drastic as a BUG_ON() in case of failure.
Instead just emit a warning, so that's easily noticed during development
(fstests in particular), and return the error to the caller.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 06ac264f
...@@ -1386,10 +1386,13 @@ int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans, ...@@ -1386,10 +1386,13 @@ int btrfs_insert_delayed_dir_index(struct btrfs_trans_handle *trans,
ret = btrfs_delayed_item_reserve_metadata(trans, dir->root, delayed_item); ret = btrfs_delayed_item_reserve_metadata(trans, dir->root, delayed_item);
/* /*
* we have reserved enough space when we start a new transaction, * Space was reserved for a dir index item insertion when we started the
* so reserving metadata failure is impossible * transaction, so getting a failure here should be impossible.
*/ */
BUG_ON(ret); if (WARN_ON(ret)) {
btrfs_release_delayed_item(delayed_item);
goto release_node;
}
mutex_lock(&delayed_node->mutex); mutex_lock(&delayed_node->mutex);
ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item); ret = __btrfs_add_delayed_insertion_item(delayed_node, delayed_item);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment