diff options
Diffstat (limited to 'fs/btrfs/async-thread.c')
-rw-r--r-- | fs/btrfs/async-thread.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/btrfs/async-thread.c b/fs/btrfs/async-thread.c index 04fb9702d14c..d82efd722a48 100644 --- a/fs/btrfs/async-thread.c +++ b/fs/btrfs/async-thread.c | |||
@@ -302,8 +302,20 @@ int btrfs_requeue_work(struct btrfs_work *work) | |||
302 | spin_lock_irqsave(&worker->lock, flags); | 302 | spin_lock_irqsave(&worker->lock, flags); |
303 | atomic_inc(&worker->num_pending); | 303 | atomic_inc(&worker->num_pending); |
304 | list_add_tail(&work->list, &worker->pending); | 304 | list_add_tail(&work->list, &worker->pending); |
305 | check_busy_worker(worker); | 305 | |
306 | /* by definition we're busy, take ourselves off the idle | ||
307 | * list | ||
308 | */ | ||
309 | if (worker->idle) { | ||
310 | spin_lock_irqsave(&worker->workers->lock, flags); | ||
311 | worker->idle = 0; | ||
312 | list_move_tail(&worker->worker_list, | ||
313 | &worker->workers->worker_list); | ||
314 | spin_unlock_irqrestore(&worker->workers->lock, flags); | ||
315 | } | ||
316 | |||
306 | spin_unlock_irqrestore(&worker->lock, flags); | 317 | spin_unlock_irqrestore(&worker->lock, flags); |
318 | |||
307 | out: | 319 | out: |
308 | return 0; | 320 | return 0; |
309 | } | 321 | } |