--- 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