summaryrefslogtreecommitdiffstats
path: root/block/cfq-iosched.c
diff options
context:
space:
mode:
authorJens Axboe <jens.axboe@oracle.com>2008-09-25 11:37:50 +0200
committerJens Axboe <jens.axboe@oracle.com>2008-10-09 08:56:19 +0200
commitf7d7b7a7a3db6526a84ea755c1c54a051e9a52de (patch)
tree4d02c3abfca1c6175527473dff12769b09b630bb /block/cfq-iosched.c
parent8bff7c6b0f63c7ee9c5e3a076338d74125b8debb (diff)
downloadlinux-f7d7b7a7a3db6526a84ea755c1c54a051e9a52de.tar.bz2
block: as/cfq ssd idle check update
We really need to know about the hardware tagging support as well, since if the SSD does not do tagging then we still want to idle. Otherwise have the same dependent sync IO vs flooding async IO problem as on rotational media. Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/cfq-iosched.c')
-rw-r--r--block/cfq-iosched.c6
1 files changed, 4 insertions, 2 deletions
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)
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));