|
|
@@ -4508,7 +4508,7 @@ static int cfq_init_queue(struct request_queue *q, struct elevator_type *e)
|
|
|
cfqd->cfq_slice[1] = cfq_slice_sync;
|
|
|
cfqd->cfq_target_latency = cfq_target_latency;
|
|
|
cfqd->cfq_slice_async_rq = cfq_slice_async_rq;
|
|
|
- cfqd->cfq_slice_idle = blk_queue_nonrot(q) ? 0 : cfq_slice_idle;
|
|
|
+ cfqd->cfq_slice_idle = cfq_slice_idle;
|
|
|
cfqd->cfq_group_idle = cfq_group_idle;
|
|
|
cfqd->cfq_latency = 1;
|
|
|
cfqd->hw_tag = -1;
|
|
|
@@ -4525,6 +4525,18 @@ static int cfq_init_queue(struct request_queue *q, struct elevator_type *e)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+static void cfq_registered_queue(struct request_queue *q)
|
|
|
+{
|
|
|
+ struct elevator_queue *e = q->elevator;
|
|
|
+ struct cfq_data *cfqd = e->elevator_data;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Default to IOPS mode with no idling for SSDs
|
|
|
+ */
|
|
|
+ if (blk_queue_nonrot(q))
|
|
|
+ cfqd->cfq_slice_idle = 0;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* sysfs parts below -->
|
|
|
*/
|
|
|
@@ -4640,6 +4652,7 @@ static struct elevator_type iosched_cfq = {
|
|
|
.elevator_may_queue_fn = cfq_may_queue,
|
|
|
.elevator_init_fn = cfq_init_queue,
|
|
|
.elevator_exit_fn = cfq_exit_queue,
|
|
|
+ .elevator_registered_fn = cfq_registered_queue,
|
|
|
},
|
|
|
.icq_size = sizeof(struct cfq_io_cq),
|
|
|
.icq_align = __alignof__(struct cfq_io_cq),
|