From 86e5770ad7beb86ae5ec04af72a735583b6324c2 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 25 Sep 2008 11:37:50 +0200 Subject: [PATCH] --- yaml --- r: 110551 b: refs/heads/master c: f7d7b7a7a3db6526a84ea755c1c54a051e9a52de h: refs/heads/master i: 110549: 57474058459cbf5449a5fb021fbaa74da84f1ae7 110547: c393a1152320be00f00004431459551011241e1d 110543: dc00f98dcbfde86dffa93d4375d3207c28b8c65d v: v3 --- [refs] | 2 +- trunk/block/as-iosched.c | 4 +++- trunk/block/cfq-iosched.c | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) 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));