block: don't use plugging on SSD devices
authorJens Axboe <jens.axboe@oracle.com>
Fri, 17 Oct 2008 11:58:29 +0000 (13:58 +0200)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 29 Dec 2008 07:28:45 +0000 (08:28 +0100)
We just want to hand the first bits of IO to the device as fast
as possible. Gains a few percent on the IOPS rate.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
block/blk-core.c

index b1fd4f5f07d38d838f044c35cfcef53e9a591233..a824e49c0d0ac0567ad8294f6289544fa40553b6 100644 (file)
@@ -268,8 +268,7 @@ void __generic_unplug_device(struct request_queue *q)
 {
        if (unlikely(blk_queue_stopped(q)))
                return;
-
-       if (!blk_remove_plug(q))
+       if (!blk_remove_plug(q) && !blk_queue_nonrot(q))
                return;
 
        q->request_fn(q);
@@ -1241,11 +1240,11 @@ get_rq:
        if (test_bit(QUEUE_FLAG_SAME_COMP, &q->queue_flags) ||
            bio_flagged(bio, BIO_CPU_AFFINE))
                req->cpu = blk_cpu_to_group(smp_processor_id());
-       if (elv_queue_empty(q))
+       if (!blk_queue_nonrot(q) && elv_queue_empty(q))
                blk_plug_device(q);
        add_request(q, req);
 out:
-       if (sync)
+       if (sync || blk_queue_nonrot(q))
                __generic_unplug_device(q);
        spin_unlock_irq(q->queue_lock);
        return 0;