mirror of https://gitee.com/openkylin/linux.git
a752359f2b
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 <yi.zou@intel.com> Tested-by: Ross Brattain <ross.b.brattain@intel.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com> |
||
---|---|---|
.. | ||
Makefile | ||
fc_disc.c | ||
fc_elsct.c | ||
fc_exch.c | ||
fc_fcp.c | ||
fc_frame.c | ||
fc_libfc.c | ||
fc_libfc.h | ||
fc_lport.c | ||
fc_npiv.c | ||
fc_rport.c |