cfq-iosched: get rid of the need for __GFP_NOFAIL in cfq_find_alloc_queue()
authorJens Axboe <jens.axboe@oracle.com>
Tue, 30 Jun 2009 07:34:12 +0000 (09:34 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Wed, 1 Jul 2009 08:56:25 +0000 (10:56 +0200)
commit6118b70b3a0b4c583439bb77600194c82f220ce3
tree6966f1b059f1bdadc0d679067796d9b4bf9a22c3
parentd5036d770f871bd34c9cfd955e6dee692e1e8e81
cfq-iosched: get rid of the need for __GFP_NOFAIL in cfq_find_alloc_queue()

Setup an emergency fallback cfqq that we allocate at IO scheduler init
time. If the slab allocation fails in cfq_find_alloc_queue(), we'll just
punt IO to that cfqq instead. This ensures that cfq_find_alloc_queue()
never fails without having to ensure free memory.

On cfqq lookup, always try to allocate a new cfqq if the given cfq io
context has the oom_cfqq assigned. This ensures that we only temporarily
punt to this shared queue.

Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/cfq-iosched.c