--- 2.4.0-test1-ac22-classzone-elevator/drivers/block/elevator.c.~1~ Sat May 27 07:46:55 2000 +++ 2.4.0-test1-ac22-classzone-elevator/drivers/block/elevator.c Wed Jun 21 04:32:42 2000 @@ -19,7 +19,7 @@ struct list_head * entry = real_head, * point = NULL; struct request * tmp; int sequence = elevator->sequence; - int latency = orig_latency -= elevator->nr_segments, pass = 0; + int latency = orig_latency - elevator->nr_segments, pass = 0; int point_latency = 0xbeefbeef; while ((entry = entry->prev) != head) { --- 2.4.0-test1-ac22-classzone-elevator/drivers/block/ll_rw_blk.c.~1~ Tue Jun 20 00:55:17 2000 +++ 2.4.0-test1-ac22-classzone-elevator/drivers/block/ll_rw_blk.c Thu Jun 22 00:53:14 2000 @@ -638,7 +638,7 @@ latency += req->nr_segments; if (elevator_sequence_before(req->elevator_sequence, sequence)) starving = 1; - if (latency < 0) + if (!starving && latency < 0) continue; if (req->sem) @@ -651,7 +651,7 @@ continue; /* Can we add it to the end of this request? */ if (req->sector + req->nr_sectors == sector) { - if (latency - req->nr_segments < 0) + if (!starving && latency - req->nr_segments < 0) break; /* * The merge_fn is a more advanced way