[SCSI] libiscsi: reset cmd timer if cmds are making progress
authorMike Christie <michaelc@cs.wisc.edu>
Wed, 10 Feb 2010 22:51:45 +0000 (16:51 -0600)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 17 Feb 2010 19:40:10 +0000 (13:40 -0600)
commit92ed4d69934a1281abcc10c6a82274a04651a260
tree731351eb3bd1c642dc8ed8b27389173e44998a77
parent9010b94636312c7fb12b591ef09e915f8f80bbd5
[SCSI] libiscsi: reset cmd timer if cmds are making progress

This patch resets the cmd timer if cmds started before
the timedout command are making progress. The idea is
that the cmd probably timed out because we are trying
to exeucte too many commands. If it turns out that the
device the IO timedout on was bad or the cmd just got
screwed up but other IO/devs were ok then we will
will figure this out when the cmds ahead of the timed
out one complete ok.

This also fixes a bug where we were sort of detecting
this by setting the last_timeout and last_xfer to the
same value when the task was allocated. That caught
the case where we never got to send any IO for it. However,
if the problem had started right before we started the
new task, then we were forced to wait an extra cmd
timeout seconds to start the scsi eh.

Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libiscsi.c