|
@@ -2297,6 +2297,9 @@ static noinline int run_clustered_refs(struct btrfs_trans_handle *trans,
|
|
|
kfree(extent_op);
|
|
|
|
|
|
if (ret) {
|
|
|
+ list_del_init(&locked_ref->cluster);
|
|
|
+ mutex_unlock(&locked_ref->mutex);
|
|
|
+
|
|
|
printk(KERN_DEBUG "btrfs: run_delayed_extent_op returned %d\n", ret);
|
|
|
spin_lock(&delayed_refs->lock);
|
|
|
return ret;
|
|
@@ -2339,6 +2342,10 @@ static noinline int run_clustered_refs(struct btrfs_trans_handle *trans,
|
|
|
count++;
|
|
|
|
|
|
if (ret) {
|
|
|
+ if (locked_ref) {
|
|
|
+ list_del_init(&locked_ref->cluster);
|
|
|
+ mutex_unlock(&locked_ref->mutex);
|
|
|
+ }
|
|
|
printk(KERN_DEBUG "btrfs: run_one_delayed_ref returned %d\n", ret);
|
|
|
spin_lock(&delayed_refs->lock);
|
|
|
return ret;
|