writeback: do uninterruptible sleep in balance_dirty_pages()

Using TASK_INTERRUPTIBLE in balance_dirty_pages() seems wrong. If it's
going to do that then it must break out if signal_pending(), otherwise
it's pretty much guaranteed to degenerate into a busywait loop. Plus we
*do* want these processes to appear in D state and to contribute to load
average.

So it should be TASK_UNINTERRUPTIBLE. -- Andrew Morton

Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Wu Fengguang and committed by Linus Torvalds d153ba64 f06328d7

+1 -1
+1 -1
mm/page-writeback.c
··· 563 563 break; /* We've done our duty */ 564 564 } 565 565 trace_wbc_balance_dirty_wait(&wbc, bdi); 566 - __set_current_state(TASK_INTERRUPTIBLE); 566 + __set_current_state(TASK_UNINTERRUPTIBLE); 567 567 io_schedule_timeout(pause); 568 568 569 569 /*