[SCSI] libfc: fix fcp pkt recovery in fc_fcp_recv_data
authorVasu Dev <vasu.dev@intel.com>
Sat, 13 Mar 2010 00:08:44 +0000 (16:08 -0800)
committerJames Bottomley <James.Bottomley@suse.de>
Sun, 11 Apr 2010 14:23:42 +0000 (09:23 -0500)
commit5c12c418e905aac2826bb70f947648944c079ed9
tree802e2e53f57361a6d3899bee226354813c94597f
parent3e22760d4db6fd89e0be46c3d132390a251da9c6
[SCSI] libfc: fix fcp pkt recovery in fc_fcp_recv_data

Currently fc_fcp_recv_data calls fc_fcp_retry_cmd to
retry failed IO but in this case tgt is still sending
data frames, therefore exchange needs to be aborted
first before initiating retry. So this patch fixes
this by aborting exchange first then have retry.

Renames fc_timeout_error to fc_fcp_recovery since
fc_timeout_error is already called from several other
places beside from fcp timeout handler and then
used fc_fcp_recovery for abort & retry from
fc_fcp_recv_data, this rename also required renaming
FC_CMD_TIME_OUT status to FC_CMD_RECOVERY to be
consistent with new fc_fcp_recovery.

Data frames are not expected for an DDPed exchange and
potentially it could be tampered data frame, so does
recovery in this case by calling fc_fcp_recovery.

Signed-off-by: Vasu Dev <vasu.dev@intel.com>
Signed-off-by: Robert Love <robert.w.love@intel.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/libfc/fc_fcp.c