From 0ef991cf89abfe32a241229b709da3b9682c7f43 Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Sun, 25 Jul 2010 14:29:15 +0300 Subject: [PATCH] --- yaml --- r: 208336 b: refs/heads/master c: 297252c81de8043ca6c36e5984c24fdb5aab9013 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/fs-writeback.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index a085d532e907..6ec5a216c52e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c4ec7908c2c5125f75fabd100e7a95626a6883ee +refs/heads/master: 297252c81de8043ca6c36e5984c24fdb5aab9013 diff --git a/trunk/fs/fs-writeback.c b/trunk/fs/fs-writeback.c index 002be0ff2ab3..05444eaa3f36 100644 --- a/trunk/fs/fs-writeback.c +++ b/trunk/fs/fs-writeback.c @@ -848,17 +848,18 @@ int bdi_writeback_thread(void *data) break; } - if (dirty_writeback_interval) { - wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10); - schedule_timeout_interruptible(wait_jiffies); - } else { - set_current_state(TASK_INTERRUPTIBLE); - if (list_empty_careful(&wb->bdi->work_list) && - !kthread_should_stop()) - schedule(); + set_current_state(TASK_INTERRUPTIBLE); + if (!list_empty(&bdi->work_list)) { __set_current_state(TASK_RUNNING); + continue; } + if (dirty_writeback_interval) { + wait_jiffies = msecs_to_jiffies(dirty_writeback_interval * 10); + schedule_timeout(wait_jiffies); + } else + schedule(); + try_to_freeze(); }