From: James Bottomley Date: Mon, 15 Dec 2008 20:13:27 +0000 (-0600) Subject: [SCSI] mpt fusion: clear list of outstanding commands on host reset X-Git-Tag: MMI-PSA29.97-13-9~30503^2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a6da74cb077e88a604e5b2a6663b44c221f0ae75;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git [SCSI] mpt fusion: clear list of outstanding commands on host reset A bug in the fusion driver was exposed by the switch to block timeout. Basically, drivers are supposed to terminate commands once error handling begins on them. The fusion apparently wasn't doing this. Under the old timeout regime, completions on terminated commands would by and large get ignored because of the way command timeouts used to work. The new block timers are very intolerant to this, though, becuase the request gets cleaned and freed. Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=12195 Reported-by: Alex Shi Tested-by: Ming Lin Cc: Eric Moore Signed-off-by: James Bottomley --- diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index d62fd4f6b52e..ee090413e598 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c @@ -2008,6 +2008,9 @@ mptscsih_host_reset(struct scsi_cmnd *SCpnt) return FAILED; } + /* make sure we have no outstanding commands at this stage */ + mptscsih_flush_running_cmds(hd); + ioc = hd->ioc; printk(MYIOC_s_INFO_FMT "attempting host reset! (sc=%p)\n", ioc->name, SCpnt);