reconnect: do not initialize iscsi to old_iscsi, use old_iscsi if appropriate
Makes it clearer that logging has to be done on the existing context, since the "iscsi" pointer will not survive iscsi_reconnect. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
@@ -231,23 +231,23 @@ void iscsi_defer_reconnect(struct iscsi_context *iscsi)
|
|||||||
|
|
||||||
int iscsi_reconnect(struct iscsi_context *old_iscsi)
|
int iscsi_reconnect(struct iscsi_context *old_iscsi)
|
||||||
{
|
{
|
||||||
struct iscsi_context *iscsi = old_iscsi;
|
struct iscsi_context *iscsi;
|
||||||
int retry = 0;
|
int retry = 0;
|
||||||
|
|
||||||
/* if there is already a deferred reconnect do not try again */
|
/* if there is already a deferred reconnect do not try again */
|
||||||
if (iscsi->reconnect_deferred) {
|
if (old_iscsi->reconnect_deferred) {
|
||||||
ISCSI_LOG(iscsi, 2, "reconnect initiated, but reconnect is already deferred");
|
ISCSI_LOG(old_iscsi, 2, "reconnect initiated, but reconnect is already deferred");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ISCSI_LOG(iscsi, 2, "reconnect initiated");
|
ISCSI_LOG(old_iscsi, 2, "reconnect initiated");
|
||||||
|
|
||||||
/* This is mainly for tests, where we do not want to automatically
|
/* This is mainly for tests, where we do not want to automatically
|
||||||
reconnect but rather want the commands to fail with an error
|
reconnect but rather want the commands to fail with an error
|
||||||
if the target drops the session.
|
if the target drops the session.
|
||||||
*/
|
*/
|
||||||
if (iscsi->no_auto_reconnect) {
|
if (old_iscsi->no_auto_reconnect) {
|
||||||
iscsi_defer_reconnect(iscsi);
|
iscsi_defer_reconnect(old_iscsi);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -302,7 +302,7 @@ try_again:
|
|||||||
if (backoff > 30) {
|
if (backoff > 30) {
|
||||||
backoff = 30;
|
backoff = 30;
|
||||||
}
|
}
|
||||||
ISCSI_LOG(iscsi, 1, "reconnect try %d failed, waiting %d seconds", retry, backoff);
|
ISCSI_LOG(old_iscsi, 1, "reconnect try %d failed, waiting %d seconds", retry, backoff);
|
||||||
iscsi_destroy_context(iscsi);
|
iscsi_destroy_context(iscsi);
|
||||||
sleep(backoff);
|
sleep(backoff);
|
||||||
retry++;
|
retry++;
|
||||||
@@ -370,11 +370,11 @@ try_again:
|
|||||||
iscsi->mallocs+=old_iscsi->mallocs;
|
iscsi->mallocs+=old_iscsi->mallocs;
|
||||||
iscsi->frees+=old_iscsi->frees;
|
iscsi->frees+=old_iscsi->frees;
|
||||||
|
|
||||||
ISCSI_LOG(iscsi, 2, "reconnect was successful");
|
|
||||||
|
|
||||||
memcpy(old_iscsi, iscsi, sizeof(struct iscsi_context));
|
memcpy(old_iscsi, iscsi, sizeof(struct iscsi_context));
|
||||||
free(iscsi);
|
free(iscsi);
|
||||||
|
|
||||||
|
ISCSI_LOG(old_iscsi, 2, "reconnect was successful");
|
||||||
|
|
||||||
old_iscsi->is_reconnecting = 0;
|
old_iscsi->is_reconnecting = 0;
|
||||||
old_iscsi->last_reconnect = time(NULL);
|
old_iscsi->last_reconnect = time(NULL);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user