OSDN Git Service

Btrfs: wake up delayed ref flushing waiters on abort
authorJosef Bacik <jbacik@fusionio.com>
Mon, 10 Jun 2013 15:52:32 +0000 (11:52 -0400)
committerJosef Bacik <jbacik@fusionio.com>
Mon, 1 Jul 2013 12:52:26 +0000 (08:52 -0400)
I hit a deadlock because we aborted when flushing delayed refs but didn't wake
any of the other flushers up and so everybody was just sleeping forever.  This
should fix the problem.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/extent-tree.c

index f84d53b..ca1893e 100644 (file)
@@ -2629,6 +2629,7 @@ again:
                        spin_unlock(&delayed_refs->lock);
                        btrfs_abort_transaction(trans, root, ret);
                        atomic_dec(&delayed_refs->procs_running_refs);
+                       wake_up(&delayed_refs->wait);
                        return ret;
                }