--- block/blk-core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Index: linux-rhel6/block/blk-core.c =================================================================== --- linux-rhel6.orig/block/blk-core.c +++ linux-rhel6/block/blk-core.c @@ -861,9 +861,11 @@ static struct request *get_request_wait( struct bio *bio) { const bool is_sync = rw_is_sync(rw_flags) != 0; + gfp_t initial_gfp_mask = (q->elevator->ops->elevator_set_req_fn ? + GFP_NOIO : GFP_ATOMIC); struct request *rq; - rq = get_request(q, rw_flags, bio, GFP_ATOMIC); + rq = get_request(q, rw_flags, bio, initial_gfp_mask); while (!rq) { DEFINE_WAIT(wait); struct io_context *ioc;