Commit 04dc6e71a28d4815bf9431efcafc107bb0ad2792

Authored by Jeff Moyer
Committed by Jens Axboe
1 parent 4d00aa47e2

cfq-iosched: use the default seek distance when there aren't enough seek samples

If the cfq io context doesn't have enough samples yet to provide a mean
seek distance, then use the default threshold we have for seeky IO instead
of defaulting to 0.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

Showing 1 changed file with 6 additions and 5 deletions Side-by-side Diff

... ... @@ -947,14 +947,18 @@
947 947 return cfqd->last_position - rq->sector;
948 948 }
949 949  
  950 +#define CIC_SEEK_THR 8 * 1024
  951 +#define CIC_SEEKY(cic) ((cic)->seek_mean > CIC_SEEK_THR)
  952 +
950 953 static inline int cfq_rq_close(struct cfq_data *cfqd, struct request *rq)
951 954 {
952 955 struct cfq_io_context *cic = cfqd->active_cic;
  956 + sector_t sdist = cic->seek_mean;
953 957  
954 958 if (!sample_valid(cic->seek_samples))
955   - return 0;
  959 + sdist = CIC_SEEK_THR;
956 960  
957   - return cfq_dist_from_last(cfqd, rq) <= cic->seek_mean;
  961 + return cfq_dist_from_last(cfqd, rq) <= sdist;
958 962 }
959 963  
960 964 static struct cfq_queue *cfqq_close(struct cfq_data *cfqd,
... ... @@ -1038,9 +1042,6 @@
1038 1042 cfq_mark_cfqq_coop(cfqq);
1039 1043 return cfqq;
1040 1044 }
1041   -
1042   -
1043   -#define CIC_SEEKY(cic) ((cic)->seek_mean > (8 * 1024))
1044 1045  
1045 1046 static void cfq_arm_slice_timer(struct cfq_data *cfqd)
1046 1047 {