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

Jens Axboe
2003-07-16T05:39:09Z

On Wed, Jul 16 2003, Nick Piggin wrote:
> Thanks Mark, great. It looks fine.
>
>
> >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)

Ehm no not really. The request isn't completed here, it looks more like
a hack to keep AS happy. We ought to make a more generic solution to
this problem, other drivers could run into it as well.

--
Jens Axboe