On Sun, 04 May 2008 22:12:12 +0900
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> wrote:
This is a problem. Processes without __GFP_FS or __GFP_IO cannot wait on
processes that have those flags set in their gfp_mask, and tasks that do
not have __GFP_IO set cannot wait for tasks with it. This is because the
tasks that have those flags set may grab locks that the tasks without the
flag are holding, causing a deadlock.
The easiest fix would be to only make tasks with both __GFP_FS and __GFP_IO
sleep. Tasks that call try_to_free_pages without those flags are relatively
rare and should hopefully not cause any issues.
--
All Rights Reversed
--