RECONNECT allow a consecutive reconnect only every 5 seconds

In case there is an error condition e.g. out of memory. We are heavily
disconnecting and reconnecting without any limit. This patch
adds a 5 seconds period that has to go by between 2 reconnects.
This commit is contained in:
Peter Lieven
2012-11-08 16:56:44 +01:00
parent a97b51bbe5
commit 144026a7bd
2 changed files with 9 additions and 1 deletions

View File

@@ -18,6 +18,7 @@
#define __iscsi_private_h__
#include <stdint.h>
#include <time.h>
#if defined(WIN32)
#include <basetsd.h>
@@ -133,6 +134,8 @@ struct iscsi_context {
int mallocs;
int reallocs;
int frees;
time_t last_reconnect;
};
#define ISCSI_PDU_IMMEDIATE 0x40
@@ -304,7 +307,7 @@ struct scsi_task *iscsi_scsi_get_task_from_pdu(struct iscsi_pdu *pdu);
void iscsi_set_noautoreconnect(struct iscsi_context *iscsi, int state);
void iscsi_decrement_iface_rr();
void iscsi_decrement_iface_rr(void);
#ifdef __cplusplus
}

View File

@@ -220,6 +220,10 @@ int iscsi_reconnect(struct iscsi_context *old_iscsi)
int retry = 0;
if (old_iscsi->last_reconnect) {
while (time(NULL) - old_iscsi->last_reconnect < 5) sleep(1);
}
try_again:
iscsi = iscsi_create_context(old_iscsi->initiator_name);
@@ -339,6 +343,7 @@ try_again:
free(iscsi);
old_iscsi->is_reconnecting = 0;
old_iscsi->last_reconnect = time(NULL);
return 0;
}