diff options
author | Josef Bacik <jbacik@fusionio.com> | 2013-06-10 11:52:32 -0400 |
---|---|---|
committer | Josef Bacik <jbacik@fusionio.com> | 2013-07-01 08:52:26 -0400 |
commit | f971fe29b14eedd4abc389593b77fbdf94ac2d59 (patch) | |
tree | e292a533e72a4e036375ea7c4e04c630c665073e /fs/btrfs | |
parent | 3fb4037599a9f14b6c58e2a813aeb03bfa03dd8f (diff) |
Btrfs: wake up delayed ref flushing waiters on abort
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>
Diffstat (limited to 'fs/btrfs')
-rw-r--r-- | fs/btrfs/extent-tree.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index f84d53bc2f5d..ca1893edda52 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -2629,6 +2629,7 @@ again: | |||
2629 | spin_unlock(&delayed_refs->lock); | 2629 | spin_unlock(&delayed_refs->lock); |
2630 | btrfs_abort_transaction(trans, root, ret); | 2630 | btrfs_abort_transaction(trans, root, ret); |
2631 | atomic_dec(&delayed_refs->procs_running_refs); | 2631 | atomic_dec(&delayed_refs->procs_running_refs); |
2632 | wake_up(&delayed_refs->wait); | ||
2632 | return ret; | 2633 | return ret; |
2633 | } | 2634 | } |
2634 | 2635 | ||