diff options
| -rw-r--r-- | block/cfq-iosched.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 3fd8afc2174e..423aee3fd19b 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
| @@ -47,6 +47,7 @@ static const int cfq_hist_divisor = 4; | |||
| 47 | #define CFQ_SERVICE_SHIFT 12 | 47 | #define CFQ_SERVICE_SHIFT 12 |
| 48 | 48 | ||
| 49 | #define CFQQ_SEEK_THR (sector_t)(8 * 100) | 49 | #define CFQQ_SEEK_THR (sector_t)(8 * 100) |
| 50 | #define CFQQ_SECT_THR_NONROT (sector_t)(2 * 32) | ||
| 50 | #define CFQQ_SEEKY(cfqq) (hweight32(cfqq->seek_history) > 32/8) | 51 | #define CFQQ_SEEKY(cfqq) (hweight32(cfqq->seek_history) > 32/8) |
| 51 | 52 | ||
| 52 | #define RQ_CIC(rq) \ | 53 | #define RQ_CIC(rq) \ |
| @@ -2965,6 +2966,7 @@ cfq_update_io_seektime(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
| 2965 | struct request *rq) | 2966 | struct request *rq) |
| 2966 | { | 2967 | { |
| 2967 | sector_t sdist = 0; | 2968 | sector_t sdist = 0; |
| 2969 | sector_t n_sec = blk_rq_sectors(rq); | ||
| 2968 | if (cfqq->last_request_pos) { | 2970 | if (cfqq->last_request_pos) { |
| 2969 | if (cfqq->last_request_pos < blk_rq_pos(rq)) | 2971 | if (cfqq->last_request_pos < blk_rq_pos(rq)) |
| 2970 | sdist = blk_rq_pos(rq) - cfqq->last_request_pos; | 2972 | sdist = blk_rq_pos(rq) - cfqq->last_request_pos; |
| @@ -2973,7 +2975,10 @@ cfq_update_io_seektime(struct cfq_data *cfqd, struct cfq_queue *cfqq, | |||
| 2973 | } | 2975 | } |
| 2974 | 2976 | ||
| 2975 | cfqq->seek_history <<= 1; | 2977 | cfqq->seek_history <<= 1; |
| 2976 | cfqq->seek_history |= (sdist > CFQQ_SEEK_THR); | 2978 | if (blk_queue_nonrot(cfqd->queue)) |
| 2979 | cfqq->seek_history |= (n_sec < CFQQ_SECT_THR_NONROT); | ||
| 2980 | else | ||
| 2981 | cfqq->seek_history |= (sdist > CFQQ_SEEK_THR); | ||
| 2977 | } | 2982 | } |
| 2978 | 2983 | ||
| 2979 | /* | 2984 | /* |
