From: Nick Piggin If there are no requess in flight against the target device and get_request() fails, nothing will wake us up. Fix. drivers/block/ll_rw_blk.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/block/ll_rw_blk.c~get_request_wait-oom-fix drivers/block/ll_rw_blk.c --- 25/drivers/block/ll_rw_blk.c~get_request_wait-oom-fix 2003-06-05 18:50:46.000000000 -0700 +++ 25-akpm/drivers/block/ll_rw_blk.c 2003-06-05 18:50:46.000000000 -0700 @@ -1399,7 +1399,7 @@ static struct request *get_request_wait( * no wakeup will be delivered. So now we're on the * waitqueue, go check for that. */ - rq = get_request(q, rw, GFP_ATOMIC & ~__GFP_HIGH); + rq = get_request(q, rw, GFP_KERNEL); if (!rq) io_schedule(); finish_wait(&rl->wait[rw], &wait); _