[PATCH] "Fix" AS i/o hang with aacraid driver
commitc4aeb06d199f0da77b30bc1ecf8f474aa4b4703a
authorAndrew Morton <akpm@osdl.org>
Fri, 18 Jul 2003 02:28:24 +0000 (17 19:28 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Fri, 18 Jul 2003 02:28:24 +0000 (17 19:28 -0700)
tree7637c371eb9c1f6a192f57e599a2c98e6516515d
parentc56671f74801b1ec75dc80198936426e7d917919
[PATCH] "Fix" AS i/o hang with aacraid driver

From: Mark Haverkamp <markh@osdl.org>

Mark says:

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

It affects other SCSI drivers, but less frequently.  We're assuming this is
the cause of several "everything got stuck in D state" reports.

A very long design discussion has ensued.  We don't have a suitably tested fix
ready so I think it is best to put Mark's one-liner in there for now, fix it
for real when everyone gets back from OLS.
drivers/scsi/scsi_lib.c