aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChris Mason <chris.mason@oracle.com>2009-09-15 20:00:36 -0400
committerChris Mason <chris.mason@oracle.com>2009-09-15 20:20:17 -0400
commit627e421a3f35ad6b52dc58982fb6f8a97c30dcd7 (patch)
tree9f1175835fe7b142b554fc66ea2367b7ec4ea1d3 /fs
parent3e99d8eb347c93a5d38081380b8c9e69b203212e (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')
-rw-r--r--fs/btrfs/async-thread.c4
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)