From: Josef Bacik Date: Wed, 21 Nov 2018 19:05:39 +0000 (-0500) Subject: btrfs: make btrfs_destroy_delayed_refs use btrfs_delayed_ref_lock X-Git-Tag: v5.1-rc1~138^2~59 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3069bd26690a01f1e8280dff9cb019fdf216a4f5;p=thirdparty%2Fkernel%2Flinux.git btrfs: make btrfs_destroy_delayed_refs use btrfs_delayed_ref_lock We have this open coded in btrfs_destroy_delayed_refs, use the helper instead. Reviewed-by: Nikolay Borisov Signed-off-by: Josef Bacik Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 888d72dda7946..b723ad9bd1e62 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4246,16 +4246,9 @@ static int btrfs_destroy_delayed_refs(struct btrfs_transaction *trans, head = rb_entry(node, struct btrfs_delayed_ref_head, href_node); - if (!mutex_trylock(&head->mutex)) { - refcount_inc(&head->refs); - spin_unlock(&delayed_refs->lock); - - mutex_lock(&head->mutex); - mutex_unlock(&head->mutex); - btrfs_put_delayed_ref_head(head); - spin_lock(&delayed_refs->lock); + if (btrfs_delayed_ref_lock(delayed_refs, head)) continue; - } + spin_lock(&head->lock); while ((n = rb_first_cached(&head->ref_tree)) != NULL) { ref = rb_entry(n, struct btrfs_delayed_ref_node,