Blame SOURCES/0024-reconnect-do-not-initialize-iscsi-to-old_iscsi-use-old_iscsi-if-appropriate.patch

a66d21
reconnect: do not initialize iscsi to old_iscsi, use old_iscsi if appropriate
a66d21
a66d21
Message-id: <1383729402-27559-6-git-send-email-pbonzini@redhat.com>
a66d21
Patchwork-id: 55500
a66d21
O-Subject: [PATCH 05/11] reconnect: do not initialize iscsi to old_iscsi, use old_iscsi if appropriate
a66d21
Bugzilla: 1026820
a66d21
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
a66d21
RH-Acked-by: Orit Wasserman <owasserm@redhat.com>
a66d21
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
a66d21
a66d21
Makes it clearer that logging has to be done on the existing context,
a66d21
since the "iscsi" pointer will not survive iscsi_reconnect.
a66d21
a66d21
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
a66d21
(cherry picked from commit c3e8d0c9454835074ebcc6971618b2e71bb948c4)
a66d21
a66d21
Conflicts:
a66d21
	lib/connect.c
a66d21
---
a66d21
 lib/connect.c | 18 +++++++++---------
a66d21
 1 file changed, 9 insertions(+), 9 deletions(-)
a66d21
diff --git a/lib/connect.c b/lib/connect.c
a66d21
index 0d4c957..d6a8759 100644
a66d21
--- a/lib/connect.c
a66d21
+++ b/lib/connect.c
a66d21
@@ -217,22 +217,22 @@ void iscsi_defer_reconnect(struct iscsi_context *iscsi)
a66d21
 
a66d21
 int iscsi_reconnect(struct iscsi_context *old_iscsi)
a66d21
 {
a66d21
-	struct iscsi_context *iscsi = old_iscsi;
a66d21
+	struct iscsi_context *iscsi;
a66d21
 
a66d21
 	/* if there is already a deferred reconnect do not try again */
a66d21
-	if (iscsi->reconnect_deferred) {
a66d21
-		ISCSI_LOG(iscsi, 2, "reconnect initiated, but reconnect is already deferred");
a66d21
+	if (old_iscsi->reconnect_deferred) {
a66d21
+		ISCSI_LOG(old_iscsi, 2, "reconnect initiated, but reconnect is already deferred");
a66d21
 		return -1;
a66d21
 	}
a66d21
 
a66d21
-	ISCSI_LOG(iscsi, 2, "reconnect initiated");
a66d21
+	ISCSI_LOG(old_iscsi, 2, "reconnect initiated");
a66d21
 
a66d21
 	/* This is mainly for tests, where we do not want to automatically
a66d21
 	   reconnect but rather want the commands to fail with an error
a66d21
 	   if the target drops the session.
a66d21
 	 */
a66d21
-	if (iscsi->no_auto_reconnect) {
a66d21
-		iscsi_defer_reconnect(iscsi);
a66d21
+	if (old_iscsi->no_auto_reconnect) {
a66d21
+		iscsi_defer_reconnect(old_iscsi);
a66d21
 		return 0;
a66d21
 	}
a66d21
 
a66d21
@@ -288,7 +288,7 @@ try_again:
a66d21
 		if (backoff > 30) {
a66d21
 			backoff=30;
a66d21
 		}
a66d21
-		ISCSI_LOG(iscsi, 1, "reconnect try %d failed, waiting %d seconds",retry,backoff);
a66d21
+		ISCSI_LOG(old_iscsi, 1, "reconnect try %d failed, waiting %d seconds", retry, backoff);
a66d21
 		iscsi_destroy_context(iscsi);
a66d21
 		sleep(backoff);
a66d21
 		retry++;
a66d21
@@ -356,11 +356,11 @@ try_again:
a66d21
 	iscsi->mallocs+=old_iscsi->mallocs;
a66d21
 	iscsi->frees+=old_iscsi->frees;
a66d21
 
a66d21
-	ISCSI_LOG(iscsi, 2, "reconnect was successful");
a66d21
-
a66d21
 	memcpy(old_iscsi, iscsi, sizeof(struct iscsi_context));
a66d21
 	free(iscsi);
a66d21
 
a66d21
+	ISCSI_LOG(old_iscsi, 2, "reconnect was successful");
a66d21
+
a66d21
 	old_iscsi->is_reconnecting = 0;
a66d21
 	old_iscsi->last_reconnect = time(NULL);
a66d21