[SCSI] hpsa: prevent stalled i/o
If a fifo full condition is encountered, i/o requests will stack up in the h->reqQ queue. The only thing which empties this queue is start_io, which only gets called when new i/o requests come in. If none are forthcoming, i/o in h->reqQ will be stalled. To fix this, whenever fifo full condition is encountered, this is recorded, and the interrupt handler examines this to see if a fifo full condition was recently encountered when a command completes and will call start_io to prevent i/o's in h->reqQ from getting stuck. I've only ever seen this problem occur when running specialized test programs that pound on the the CCISS_PASSTHRU ioctl. Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:

committato da
James Bottomley

parent
0390f0c0df
commit
396883e292
@@ -136,6 +136,7 @@ struct ctlr_info {
|
||||
atomic_t firmware_flash_in_progress;
|
||||
u32 lockup_detected;
|
||||
struct list_head lockup_list;
|
||||
u32 fifo_recently_full;
|
||||
/* Address of h->q[x] is passed to intr handler to know which queue */
|
||||
u8 q[MAX_REPLY_QUEUES];
|
||||
u32 TMFSupportFlags; /* cache what task mgmt funcs are supported. */
|
||||
|
Fai riferimento in un nuovo problema
Block a user