Skip to content

Commit

Permalink
block: as/cfq ssd idle check update
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Jens Axboe committed Oct 9, 2008
1 parent 8bff7c6 commit f7d7b7a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 3 deletions.
4 changes: 3 additions & 1 deletion block/as-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
/*
Expand Down
6 changes: 4 additions & 2 deletions block/cfq-iosched.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down

0 comments on commit f7d7b7a

Please sign in to comment.