There have been a number of reports of problems with the elevator.c debugging
messages:
30:01: elevator read_pendings 2 should be 1
30:01: elevator nr_segments 12 should be 11
showing up under load on systems with DAC960 RAID controllers. The underlying
problem here is that the elevator accounting in ll_rw_blk.c is incorrect in the
case where the call to the request_fn blocks. In that case, the request has
already been placed into the queue but the call to elevator_account_request to
account for it in the elevator data structures will not be make until after the
request_fn completes. The following patch will correct this.
Leonard
--- linux/drivers/block/ll_rw_blk.c- Wed May 24 18:38:26 2000
+++ linux/drivers/block/ll_rw_blk.c Tue May 30 18:38:07 2000
@@ -411,6 +411,7 @@
drive_stat_acct(req->rq_dev, req->cmd, req->nr_sectors, 1);
+ elevator_account_request(&q->elevator, req);
if (list_empty(head)) {
req->elevator_sequence = elevator_sequence(&q->elevator, latency);
list_add(&req->queue, &q->queue_head);
@@ -748,7 +749,6 @@
req->bhtail = bh;
req->q = q;
add_request(q, req, head, orig_latency);
- elevator_account_request(elevator, req);
spin_unlock_irqrestore(&io_request_lock, flags);
return;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Wed May 31 2000 - 21:00:26 EST