--- /opt/kernel/linux-2.4.0-test2-pre11/drivers/block/ll_rw_blk.c Sat Jun 24 01:34:09 2000 +++ drivers/block/ll_rw_blk.c Sat Jun 24 01:35:46 2000 @@ -709,15 +709,11 @@ req = __get_request_wait(q, rw); spin_lock_irq(&io_request_lock); - - /* - * revalidate elevator, queue request_lock was dropped - */ - head = &q->queue_head; - if (q->head_active && !q->plugged) - head = head->next; - } + + head = &q->queue_head; + if (q->head_active && !q->plugged) + head = head->next; /* fill up the request-info, and add it to the queue */ req->cmd = rw; --- /opt/kernel/linux-2.4.0-test2-pre11/drivers/block/elevator.c Sat Jun 24 01:34:09 2000 +++ drivers/block/elevator.c Sat Jun 24 01:36:37 2000 @@ -83,10 +83,10 @@ latency = orig_latency = elevator_request_latency(elevator, rw); sequence = elevator->sequence; + entry = head; if (q->head_active && !q->plugged) head = head->next; - entry = head; while ((entry = entry->prev) != head && !starving) { *req = blkdev_entry_to_request(entry); latency += (*req)->nr_segments; @@ -161,10 +161,10 @@ struct list_head *entry, *head = &q->queue_head; unsigned int count = bh->b_size >> 9; + entry = head; if (q->head_active && !q->plugged) head = head->next; - entry = head; while ((entry = entry->prev) != head) { *req = blkdev_entry_to_request(entry); if (!(*req)->elevator_sequence)