diff --git a/[refs] b/[refs] index f4163064eebb..c025d588ffd0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8bff7c6b0f63c7ee9c5e3a076338d74125b8debb +refs/heads/master: f7d7b7a7a3db6526a84ea755c1c54a051e9a52de diff --git a/trunk/block/as-iosched.c b/trunk/block/as-iosched.c index 4c6fafbba933..71f0abb219ee 100644 --- a/trunk/block/as-iosched.c +++ b/trunk/block/as-iosched.c @@ -745,11 +745,13 @@ static int as_can_break_anticipation(struct as_data *ad, struct request *rq) */ static int as_can_anticipate(struct as_data *ad, struct request *rq) { +#if 0 /* disable for now, we need to check tag level as well */ /* * SSD device without seek penalty, disable idling */ - if (blk_queue_nonrot(ad->q)) + if (blk_queue_nonrot(ad->q)) axman return 0; +#endif if (!ad->io_context) /* diff --git a/trunk/block/cfq-iosched.c b/trunk/block/cfq-iosched.c index 03a5953bb5df..6a062eebbd15 100644 --- a/trunk/block/cfq-iosched.c +++ b/trunk/block/cfq-iosched.c @@ -879,9 +879,11 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd) unsigned long sl; /* - * SSD device without seek penalty, disable idling + * SSD device without seek penalty, disable idling. But only do so + * for devices that support queuing, otherwise we still have a problem + * with sync vs async workloads. */ - if (blk_queue_nonrot(cfqd->queue)) + if (blk_queue_nonrot(cfqd->queue) && cfqd->hw_tag) return; WARN_ON(!RB_EMPTY_ROOT(&cfqq->sort_list));