]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - block/elevator.c
perf report: Drop cycles 0 for LBR print
[mirror_ubuntu-artful-kernel.git] / block / elevator.c
index 699d10f71a2cac3f871bb6879f68f1fc5fafe714..01139f549b5be73047f346153f5b8fedcb23b3d0 100644 (file)
@@ -220,17 +220,24 @@ int elevator_init(struct request_queue *q, char *name)
        }
 
        if (!e) {
-               if (q->mq_ops && q->nr_hw_queues == 1)
-                       e = elevator_get(CONFIG_DEFAULT_SQ_IOSCHED, false);
-               else if (q->mq_ops)
-                       e = elevator_get(CONFIG_DEFAULT_MQ_IOSCHED, false);
-               else
+               /*
+                * For blk-mq devices, we default to using mq-deadline,
+                * if available, for single queue devices. If deadline
+                * isn't available OR we have multiple queues, default
+                * to "none".
+                */
+               if (q->mq_ops) {
+                       if (q->nr_hw_queues == 1)
+                               e = elevator_get("mq-deadline", false);
+                       if (!e)
+                               return 0;
+               } else
                        e = elevator_get(CONFIG_DEFAULT_IOSCHED, false);
 
                if (!e) {
                        printk(KERN_ERR
                                "Default I/O scheduler not found. " \
-                               "Using noop/none.\n");
+                               "Using noop.\n");
                        e = elevator_get("noop", false);
                }
        }
@@ -976,9 +983,7 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e)
                if (old_registered)
                        elv_unregister_queue(q);
 
-               spin_lock_irq(q->queue_lock);
                ioc_clear_queue(q);
-               spin_unlock_irq(q->queue_lock);
        }
 
        /* allocate, init and register new elevator */