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>
This commit is contained in:
Родитель
f06328d772
Коммит
d153ba6445
|
@ -563,7 +563,7 @@ static void balance_dirty_pages(struct address_space *mapping,
|
||||||
break; /* We've done our duty */
|
break; /* We've done our duty */
|
||||||
}
|
}
|
||||||
trace_wbc_balance_dirty_wait(&wbc, bdi);
|
trace_wbc_balance_dirty_wait(&wbc, bdi);
|
||||||
__set_current_state(TASK_INTERRUPTIBLE);
|
__set_current_state(TASK_UNINTERRUPTIBLE);
|
||||||
io_schedule_timeout(pause);
|
io_schedule_timeout(pause);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче