diff options
| -rw-r--r-- | fs/fs-writeback.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 76f546d56a6..437a7431b4e 100644 --- a/fs/fs-writeback.c +++ b/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();  	}  |