diff options
Diffstat (limited to 'block')
-rw-r--r-- | block/as-iosched.c | 4 | ||||
-rw-r--r-- | block/cfq-iosched.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/block/as-iosched.c b/block/as-iosched.c index 4c6fafbba933..71f0abb219ee 100644 --- a/block/as-iosched.c +++ b/block/as-iosched.c | |||
@@ -745,11 +745,13 @@ static int as_can_break_anticipation(struct as_data *ad, struct request *rq) | |||
745 | */ | 745 | */ |
746 | static int as_can_anticipate(struct as_data *ad, struct request *rq) | 746 | static int as_can_anticipate(struct as_data *ad, struct request *rq) |
747 | { | 747 | { |
748 | #if 0 /* disable for now, we need to check tag level as well */ | ||
748 | /* | 749 | /* |
749 | * SSD device without seek penalty, disable idling | 750 | * SSD device without seek penalty, disable idling |
750 | */ | 751 | */ |
751 | if (blk_queue_nonrot(ad->q)) | 752 | if (blk_queue_nonrot(ad->q)) axman |
752 | return 0; | 753 | return 0; |
754 | #endif | ||
753 | 755 | ||
754 | if (!ad->io_context) | 756 | if (!ad->io_context) |
755 | /* | 757 | /* |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 03a5953bb5df..6a062eebbd15 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -879,9 +879,11 @@ static void cfq_arm_slice_timer(struct cfq_data *cfqd) | |||
879 | unsigned long sl; | 879 | unsigned long sl; |
880 | 880 | ||
881 | /* | 881 | /* |
882 | * SSD device without seek penalty, disable idling | 882 | * SSD device without seek penalty, disable idling. But only do so |
883 | * for devices that support queuing, otherwise we still have a problem | ||
884 | * with sync vs async workloads. | ||
883 | */ | 885 | */ |
884 | if (blk_queue_nonrot(cfqd->queue)) | 886 | if (blk_queue_nonrot(cfqd->queue) && cfqd->hw_tag) |
885 | return; | 887 | return; |
886 | 888 | ||
887 | WARN_ON(!RB_EMPTY_ROOT(&cfqq->sort_list)); | 889 | WARN_ON(!RB_EMPTY_ROOT(&cfqq->sort_list)); |