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