--- 533df3ccdfa07289572b07cefbb40ddf9ede1dac +++ 5139c0ea1864a858b6072febcf636a71e9bc6f13 @@ -17,10 +17,10 @@ /* * See Documentation/block/deadline-iosched.txt */ -static const int read_expire = HZ / 4; /* max time before a read is submitted. */ +static const int read_expire = HZ / 2; /* max time before a read is submitted. */ static const int write_expire = 5 * HZ; /* ditto for writes, these limits are SOFT! */ -static const int writes_starved = 4; /* max times reads can starve a write */ -static const int fifo_batch = 1; /* # of sequential requests treated as one +static const int writes_starved = 2; /* max times reads can starve a write */ +static const int fifo_batch = 16; /* # of sequential requests treated as one by the above parameters. For throughput. */ struct deadline_data { @@ -77,8 +77,10 @@ static void deadline_add_rq_rb(struct deadline_data *dd, struct request *rq) { struct rb_root *root = deadline_rb_root(dd, rq); + struct request *__alias; - elv_rb_add(root, rq); + while (unlikely(__alias = elv_rb_add(root, rq))) + deadline_move_request(dd, __alias); } static inline void @@ -352,7 +354,7 @@ static void *deadline_init_queue(struct dd->fifo_expire[READ] = read_expire; dd->fifo_expire[WRITE] = write_expire; dd->writes_starved = writes_starved; - dd->front_merges = 0; + dd->front_merges = 1; dd->fifo_batch = fifo_batch; return dd; }