diff options
author | Ilya Dryomov <idryomov@gmail.com> | 2013-11-03 19:06:40 +0200 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-11-20 20:42:11 -0500 |
commit | ba69994a40b242bef26ab2683ea84aa29e2e429f (patch) | |
tree | 9a2b0597ce5668821472606355f41cee8fd10f05 | |
parent | 908960c6c0fb3b3ce3971dc0ca47b581d256b968 (diff) |
Btrfs: fix __btrfs_start_workers retval
__btrfs_start_workers returns 0 in case it raced with
btrfs_stop_workers and lost the race. This is wrong because worker in
this case is not allowed to start and is in fact destroyed. Return
-EINVAL instead.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r-- | fs/btrfs/async-thread.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 8aec751fa46..c1e0b0caf9c 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c @@ -495,6 +495,7 @@ static int __btrfs_start_workers(struct btrfs_workers *workers) spin_lock_irq(&workers->lock); if (workers->stopping) { spin_unlock_irq(&workers->lock); + ret = -EINVAL; goto fail_kthread; } list_add_tail(&worker->worker_list, &workers->idle_list); |