From: Yi Zou Date: Fri, 6 Jul 2012 17:40:31 +0000 (-0700) Subject: [SCSI] libfc: fix sending REC after FCP_RESP is received X-Git-Tag: v3.6-rc1~103^2~23 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a752359f2b0a291c5f229e883842e4b30c698387;p=pandora-kernel.git [SCSI] libfc: fix sending REC after FCP_RESP is received This is exposed in the case the FCP_DATA frames somehow got lost and fc_fcp got the FCP_RSP, in fc_fcp_recv_resp(), since xfer_len is less than the expected_len it resets the the timer to wait to 2 more jiffies in case the data frames are already queued locally. However, for target does not support REC, it would just send RJT w/ ELS_RJT_UNSUP. The rec response handler thus only clears the rport flag for not doing REC later, but does not do fcp_io_complete() on the associated fsp. The fix is just check status of FCP_RSP being received already, i.e. using the FC_SRB_RCV_STATUS flag, in fc_fcp_timeout before start sending REC. We should have waited long enough if there is truely data frames queued locally. Signed-off-by: Yi Zou Tested-by: Ross Brattain Signed-off-by: Robert Love Signed-off-by: James Bottomley --- Reading git-diff-tree failed