Skip to contentSkip to conversation

block/iscsi: do not forget to logout from target

PATCH In review Peter Lieven 2 participants 2 messages Apr 14, 2015 Block layer

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 block/iscsi: do not forget to logout from target

We actually were always impolitely dropping the connection and not cleanly logging out.

---
 block/iscsi.c | 6 ++++++
 1 file changed, 6 insertions(+)
block/iscsi.c +6 -0
index ab20e4d..0b6d3dd 100644
@@ -1503,6 +1503,9 @@ out:
 
     if (ret) {
         if (iscsi != NULL) {
+            if (iscsi_is_logged_in(iscsi)) {
+                iscsi_logout_sync(iscsi);
+            }
             iscsi_destroy_context(iscsi);
         }
         memset(iscsilun, 0, sizeof(IscsiLun));
@@ -1516,6 +1519,9 @@ static void iscsi_close(BlockDriverState *bs)
     struct iscsi_context *iscsi = iscsilun->iscsi;
 
     iscsi_detach_aio_context(bs);
+    if (iscsi_is_logged_in(iscsi)) {
+        iscsi_logout_sync(iscsi);
+    }
     iscsi_destroy_context(iscsi);
     g_free(iscsilun->zeroblock);
     g_free(iscsilun->allocationmap);
Signature · 1 line
1.9.1
Reviewed-by on v1 1/1
#1 lore raw
Quoted 36 lines · Peter Lieven

We actually were always impolitely dropping the connection and not cleanly logging out.

---
 block/iscsi.c | 6 ++++++
 1 file changed, 6 insertions(+)
block/iscsi.c +6 -1
index ab20e4d..0b6d3dd 100644
@@ -1503,6 +1503,9 @@ out:
 
     if (ret) {
         if (iscsi != NULL) {
+            if (iscsi_is_logged_in(iscsi)) {
+                iscsi_logout_sync(iscsi);
+            }
             iscsi_destroy_context(iscsi);
         }
         memset(iscsilun, 0, sizeof(IscsiLun));
@@ -1516,6 +1519,9 @@ static void iscsi_close(BlockDriverState *bs)
     struct iscsi_context *iscsi = iscsilun->iscsi;
 
     iscsi_detach_aio_context(bs);
+    if (iscsi_is_logged_in(iscsi)) {
+        iscsi_logout_sync(iscsi);
+    }
     iscsi_destroy_context(iscsi);
     g_free(iscsilun->zeroblock);
     g_free(iscsilun->allocationmap);
--

1.9.1