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 | |
parent | 3e99d8eb347c93a5d38081380b8c9e69b203212e (diff) | |
download | op-kernel-dev-627e421a3f35ad6b52dc58982fb6f8a97c30dcd7.zip op-kernel-dev-627e421a3f35ad6b52dc58982fb6f8a97c30dcd7.tar.gz |
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.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 73df627..80e33bc 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) int freeit = 0; spin_lock_irq(&worker->lock); - spin_lock_irq(&worker->workers->lock); + spin_lock(&worker->workers->lock); if (worker->workers->num_workers > 1 && worker->idle && !worker->working && @@ -196,7 +196,7 @@ static int try_worker_shutdown(struct btrfs_worker_thread *worker) list_del_init(&worker->worker_list); worker->workers->num_workers--; } - spin_unlock_irq(&worker->workers->lock); + spin_unlock(&worker->workers->lock); spin_unlock_irq(&worker->lock); if (freeit) |