aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/async-thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/async-thread.c')
-rw-r--r--fs/btrfs/async-thread.c14
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
307out: 319out:
308 return 0; 320 return 0;
309} 321}