This just moves some duplicated code into a helper. I couldn't bring myself to add another copy in an upcoming patch.
The delayed_root BUG() in __btrfs_remove_delayed_item() wasn't needed. The pointer deref will oops later if its null. And now the remaining BUG() is in one place! :) Signed-off-by: Zach Brown <z...@redhat.com> --- fs/btrfs/delayed-inode.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 67e0f9f..fcce951 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -382,6 +382,16 @@ static struct btrfs_delayed_item *__btrfs_lookup_delayed_insertion_item( return item; } +static struct rb_root *get_ins_del_root(struct btrfs_delayed_node *delayed_node, + int ins_del) +{ + if (ins_del == BTRFS_DELAYED_INSERTION_ITEM) + return &delayed_node->ins_root; + if (ins_del == BTRFS_DELAYED_DELETION_ITEM) + return &delayed_node->del_root; + BUG(); +} + static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, struct btrfs_delayed_item *ins, int action) @@ -392,12 +402,7 @@ static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node, struct btrfs_delayed_item *item; int cmp; - if (action == BTRFS_DELAYED_INSERTION_ITEM) - root = &delayed_node->ins_root; - else if (action == BTRFS_DELAYED_DELETION_ITEM) - root = &delayed_node->del_root; - else - BUG(); + root = get_ins_del_root(delayed_node, action); p = &root->rb_node; node = &ins->rb_node; @@ -460,15 +465,8 @@ static void __btrfs_remove_delayed_item(struct btrfs_delayed_item *delayed_item) delayed_root = delayed_item->delayed_node->root->fs_info->delayed_root; - BUG_ON(!delayed_root); - BUG_ON(delayed_item->ins_or_del != BTRFS_DELAYED_DELETION_ITEM && - delayed_item->ins_or_del != BTRFS_DELAYED_INSERTION_ITEM); - - if (delayed_item->ins_or_del == BTRFS_DELAYED_INSERTION_ITEM) - root = &delayed_item->delayed_node->ins_root; - else - root = &delayed_item->delayed_node->del_root; - + root = get_ins_del_root(delayed_item->delayed_node, + delayed_item->ins_or_del); rb_erase(&delayed_item->rb_node, root); delayed_item->delayed_node->count--; -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html