]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/block/cfq-iosched.c
When cfq I/O scheduler is selected, get_request() in __make_request() calls
[linux-2.6-omap-h63xx.git] / drivers / block / cfq-iosched.c
index 0ef7a0065ece2c9468ced12e65016c37b40ad3c4..2210bacad56a34c4023a85036681c51657d19f8b 100644 (file)
@@ -1202,13 +1202,16 @@ retry:
                if (new_cfqq) {
                        cfqq = new_cfqq;
                        new_cfqq = NULL;
-               } else if (gfp_mask & __GFP_WAIT) {
+               } else {
                        spin_unlock_irq(cfqd->queue->queue_lock);
                        new_cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);
                        spin_lock_irq(cfqd->queue->queue_lock);
+
+                       if (!new_cfqq && !(gfp_mask & __GFP_WAIT))
+                               goto out;
+
                        goto retry;
-               } else
-                       goto out;
+               }
 
                memset(cfqq, 0, sizeof(*cfqq));