2
0
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:
Michael Brown 2009-08-10 02:20:21 +01:00
parent a0d337912e
commit 965a0f7a75
2 changed files with 5 additions and 18 deletions

View File

@ -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",

View File

@ -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;