From 1f9322c5cdb7878370325ae6acb229d6b6387bc3 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 18 May 2010 14:31:45 +0200 Subject: [PATCH] --- yaml --- r: 196869 b: refs/heads/master c: f9eadbbd424c083b8005c7b738f644611b9ef489 h: refs/heads/master i: 196867: 497632587d3b96cea73d10a0d7c4aa91bc5a03bd v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 20a33f695fb5..2bd6dc89cd1d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7c8a3554c683f512dbcee26faedb42e4c05f12fa +refs/heads/master: f9eadbbd424c083b8005c7b738f644611b9ef489 diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index 76f546d56a64..437a7431b4ea 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -978,8 +978,13 @@ int bdi_writeback_task(struct bdi_writeback *wb) if (dirty_writeback_interval) { wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10); schedule_timeout_interruptible(wait_jiffies); - } else - schedule(); + } else { + set_current_state(TASK_INTERRUPTIBLE); + if (list_empty_careful(&wb->bdi->work_list) && + !kthread_should_stop()) + schedule(); + __set_current_state(TASK_RUNNING); + } try_to_freeze(); }