mirror of
https://github.com/xcat2/xNBA.git
synced 2024-11-25 19:08:35 +00:00
[infiniband] Allow SRP reconnection attempts even after reporting failures
With iSCSI, connection attempts are expensive; it may take many seconds to determine that a connection will fail. SRP connection attempts are much less expensive, so we may as well avoid the "optimisation" of declaring a state of permanent failure after a certain number of attempts. This allows a gPXE SRP initiator to resume operations after an arbitrary amount of SRP target downtime.
This commit is contained in:
parent
a0d337912e
commit
965a0f7a75
@ -80,19 +80,16 @@ static void srp_fail ( struct srp_device *srp, int rc ) {
|
||||
/* Clear session state */
|
||||
srp->state = 0;
|
||||
|
||||
/* Increment retry count */
|
||||
srp->retry_count++;
|
||||
|
||||
/* If we have reached the retry limit, permanently abort the
|
||||
* session.
|
||||
*/
|
||||
/* If we have reached the retry limit, report the failure */
|
||||
if ( srp->retry_count >= SRP_MAX_RETRIES ) {
|
||||
srp->instant_rc = rc;
|
||||
srp_scsi_done ( srp, rc );
|
||||
return;
|
||||
}
|
||||
|
||||
/* Otherwise, try to reopen the connection */
|
||||
/* Otherwise, increment the retry count and try to reopen the
|
||||
* connection
|
||||
*/
|
||||
srp->retry_count++;
|
||||
srp_login ( srp );
|
||||
}
|
||||
|
||||
@ -445,10 +442,6 @@ static int srp_command ( struct scsi_device *scsi,
|
||||
struct srp_device *srp =
|
||||
container_of ( scsi->backend, struct srp_device, refcnt );
|
||||
|
||||
/* Return instant failure, if we have already aborted the session */
|
||||
if ( srp->instant_rc )
|
||||
return srp->instant_rc;
|
||||
|
||||
/* Store SCSI command */
|
||||
if ( srp->command ) {
|
||||
DBGC ( srp, "SRP %p cannot handle concurrent SCSI commands\n",
|
||||
|
@ -828,12 +828,6 @@ struct srp_device {
|
||||
unsigned int state;
|
||||
/** Retry counter */
|
||||
unsigned int retry_count;
|
||||
/** Instant return status code
|
||||
*
|
||||
* Used to avoid retrying the connection on every new SCSI
|
||||
* command after the retry count has been exceeded.
|
||||
*/
|
||||
int instant_rc;
|
||||
/** Current SCSI command */
|
||||
struct scsi_command *command;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user