[SCSI] lpfc driver 8.0.30 : dev_loss and nodev timeouts
authorJames.Smart@Emulex.Com <James.Smart@Emulex.Com>
Wed, 10 Aug 2005 19:02:30 +0000 (15:02 -0400)
committerJames Bottomley <jejb@mulgrave.(none)>
Fri, 12 Aug 2005 17:08:54 +0000 (12:08 -0500)
commitea84c3f74df646a0897e95c78147190517a751a9
treeab04eda0ed5763908dfbb5803e44052e53607f40
parentf888ba3ce77c66bece3d804caf7d559838209a4a
[SCSI] lpfc driver 8.0.30 : dev_loss and nodev timeouts

Fix handling of the dev_loss and nodev timeouts.

Symptoms: when remote port disappears for a period of time longer then
either nodev_tmo or dev_loss_tmo, the lpfc driver worker thread will
stall removing that remote port.

Cause: removing remote port involves un-blocking and sync-ing
corresponding block device queue. But corresponding node in the lpfc
driver is still in the NPR(?node port recovery?) state and mid-layer
gets SCSI_MLQUEUE_HOST_BUSY as a return value when it is trying to call
queuecommand() with command for that node (AKA remote port)

Fix: Instead of returning SCSI_MLQUEUE_HOST_BUS from queuecommand() for
nodes in NPR states complete it with retry-able error code  DID_BUS_BUSY

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
drivers/scsi/lpfc/lpfc_scsi.c