Skip to content

Commit

Permalink
btrfs: assert that delayed item is a dir index item when adding it
Browse files Browse the repository at this point in the history
All delayed items are for dir index items, we don't support any other item
types at the moment. So simplify __btrfs_add_delayed_item() and add an
assertion for checking the item's key type. This also allows the next
change to be simpler and avoid to check key types. In case we add support
for different item types in the future, then we'll hit the assertion
during development and be able to adjust any code that is assuming delayed
items are always associated to dir index items.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Filipe Manana authored and David Sterba committed Jul 25, 2022
1 parent 4bd02d9 commit a176aff
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions fs/btrfs/delayed-inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -438,10 +438,12 @@ static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,
ins->delayed_node = delayed_node;
ins->ins_or_del = action;

if (ins->key.type == BTRFS_DIR_INDEX_KEY &&
action == BTRFS_DELAYED_INSERTION_ITEM &&
/* Delayed items are always for dir index items. */
ASSERT(ins->key.type == BTRFS_DIR_INDEX_KEY);

if (action == BTRFS_DELAYED_INSERTION_ITEM &&
ins->key.offset >= delayed_node->index_cnt)
delayed_node->index_cnt = ins->key.offset + 1;
delayed_node->index_cnt = ins->key.offset + 1;

delayed_node->count++;
atomic_inc(&delayed_node->root->fs_info->delayed_root->items);
Expand Down

0 comments on commit a176aff

Please sign in to comment.