diff options
author | Chris Mason <chris.mason@oracle.com> | 2009-09-15 20:00:36 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2009-09-15 20:20:17 -0400 |
commit | 627e421a3f35ad6b52dc58982fb6f8a97c30dcd7 (patch) | |
tree | 9f1175835fe7b142b554fc66ea2367b7ec4ea1d3 /fs/btrfs/async-thread.c | |
parent | 3e99d8eb347c93a5d38081380b8c9e69b203212e (diff) |
Btrfs: fix worker thread double spin_lock_irq
The exit-on-idle code for async worker threads was incorrectly
calling spin_lock_irq with interrupts already off.
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/async-thread.c')
-rw-r--r-- | fs/btrfs/async-thread.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 73df627ab8ab..80e33bc96c84 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c | |||
@@ -185,7 +185,7 @@ static int try_worker_shutdown(struct btrfs_worker_thread *worker) | |||
185 | int freeit = 0; | 185 | int freeit = 0; |
186 | 186 | ||
187 | spin_lock_irq(&worker->lock); | 187 | spin_lock_irq(&worker->lock); |
188 | spin_lock_irq(&worker->workers->lock); | 188 | spin_lock(&worker->workers->lock); |
189 | if (worker->workers->num_workers > 1 && | 189 | if (worker->workers->num_workers > 1 && |
190 | worker->idle && | 190 | worker->idle && |
191 | !worker->working && | 191 | !worker->working && |
@@ -196,7 +196,7 @@ static int try_worker_shutdown(struct btrfs_worker_thread *worker) | |||
196 | list_del_init(&worker->worker_list); | 196 | list_del_init(&worker->worker_list); |
197 | worker->workers->num_workers--; | 197 | worker->workers->num_workers--; |
198 | } | 198 | } |
199 | spin_unlock_irq(&worker->workers->lock); | 199 | spin_unlock(&worker->workers->lock); |
200 | spin_unlock_irq(&worker->lock); | 200 | spin_unlock_irq(&worker->lock); |
201 | 201 | ||
202 | if (freeit) | 202 | if (freeit) |