[PATCH] as i/o hang with aacraid driver 2.6.0-test1

Mark Haverkamp
2003-07-15T22:48:10Z

Daniel McNeil and I have been debugging a hang with the aacraid driver
using the as I/O scheduler. We found that scsi_request_fn would
de-queue a request and later re-queued it. This left the
as_data->nr_dispatched variable in an inconsistent state (it was never
being decremented back to zero). We added a call to
elv_completed_request to clean up the state before re-adding the
request. This has fixed our hang problem. The linux-scsi list is being
copied for review of the scsi_lib.c change.

===== drivers/scsi/scsi_lib.c 1.99 vs edited =====
--- 1.99/drivers/scsi/scsi_lib.c Sun Jun 29 18:14:44 2003
+++ edited/drivers/scsi/scsi_lib.c Tue Jul 15 15:47:45 2003
@@ -1215,6 +1215,7 @@
spin_lock_irq(q->queue_lock);
if (blk_rq_tagged(req))
blk_queue_end_tag(q, req);
+ elv_completed_request(q, req);
__elv_add_request(q, req, 0, 0);
sdev->device_busy--;
if(sdev->device_busy == 0)

--
Mark Haverkamp <markh@osdl.org>