On 12/09/2012 05:19 PM, Mike Christie wrote: > >> > >>> >> >>> >> >>>> >>> @@ -3266,8 +3271,8 @@ fc_timeout_fail_rport_io(struct work_struct *work) >>>> >>> if (rport->port_state != FC_PORTSTATE_BLOCKED) >>>> >>> return; >>>> >>> >>>> >>> - rport->flags |= FC_RPORT_FAST_FAIL_TIMEDOUT; >>>> >>> fc_terminate_rport_io(rport); >>>> >>> + rport->flags |= FC_RPORT_FAST_FAIL_TIMEDOUT; >>>> >>> } >>>> >>> >>> >> >>> >> What was the reason for moving this? For the eh case in this patch was >>> >> it causing IO to be failed with DID_TRANSPORT_FAILFAST when we wanted it >>> >> failed with some other error. >>> >> >> > I wanted to ensure that fc_terminate_rport_io() was run when checking >> > FC_RPORT_FAST_FAIL_TIMEOUT. >> > Without the move there is a race window between clearing the flag and >> > calling fc_terminate_rport_io(), which one might trigger by just >> > checking the flag. >> > > What code is this? I am not sure what you mean. fc_terminate_rport_io is > always going to get run. There does not seem to be checks in it for > FC_RPORT_FAST_FAIL_TIMEOUT. Ignore this. I misread your mail. I see what you meant. -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html