Blame SOURCES/kvm-iscsi-Create-and-use-iscsi_co_wait_for_task.patch

1bdc94
From b528c59ca234b23c7bdcb9d3bcff20cdb111fd46 Mon Sep 17 00:00:00 2001
1bdc94
From: Fam Zheng <famz@redhat.com>
1bdc94
Date: Fri, 29 Jun 2018 06:11:47 +0200
1bdc94
Subject: [PATCH 43/57] iscsi: Create and use iscsi_co_wait_for_task
1bdc94
1bdc94
RH-Author: Fam Zheng <famz@redhat.com>
1bdc94
Message-id: <20180629061153.12687-8-famz@redhat.com>
1bdc94
Patchwork-id: 81160
1bdc94
O-Subject: [RHEL-7.6 qemu-kvm-rhev PATCH v2 07/13] iscsi: Create and use iscsi_co_wait_for_task
1bdc94
Bugzilla: 1482537
1bdc94
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
1bdc94
RH-Acked-by: Max Reitz <mreitz@redhat.com>
1bdc94
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
1bdc94
1bdc94
This loop is repeated a growing number times. Make a helper.
1bdc94
1bdc94
Signed-off-by: Fam Zheng <famz@redhat.com>
1bdc94
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
1bdc94
Reviewed-by: Eric Blake <eblake@redhat.com>
1bdc94
Message-id: 20180601092648.24614-8-famz@redhat.com
1bdc94
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
1bdc94
(cherry picked from commit 66e75c03b2247bda6dcaa883b700291bc0f7f0ef)
1bdc94
Signed-off-by: Fam Zheng <famz@redhat.com>
1bdc94
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
1bdc94
---
1bdc94
 block/iscsi.c | 54 +++++++++++++++++-------------------------------------
1bdc94
 1 file changed, 17 insertions(+), 37 deletions(-)
1bdc94
1bdc94
diff --git a/block/iscsi.c b/block/iscsi.c
1bdc94
index a1a0044..338f3dd 100644
1bdc94
--- a/block/iscsi.c
1bdc94
+++ b/block/iscsi.c
1bdc94
@@ -557,6 +557,17 @@ static inline bool iscsi_allocmap_is_valid(IscsiLun *iscsilun,
1bdc94
                                offset / iscsilun->cluster_size) == size);
1bdc94
 }
1bdc94
 
1bdc94
+static void coroutine_fn iscsi_co_wait_for_task(IscsiTask *iTask,
1bdc94
+                                                IscsiLun *iscsilun)
1bdc94
+{
1bdc94
+    while (!iTask->complete) {
1bdc94
+        iscsi_set_events(iscsilun);
1bdc94
+        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
+        qemu_coroutine_yield();
1bdc94
+        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
+    }
1bdc94
+}
1bdc94
+
1bdc94
 static int coroutine_fn
1bdc94
 iscsi_co_writev_flags(BlockDriverState *bs, int64_t sector_num, int nb_sectors,
1bdc94
                       QEMUIOVector *iov, int flags)
1bdc94
@@ -618,12 +629,7 @@ retry:
1bdc94
     scsi_task_set_iov_out(iTask.task, (struct scsi_iovec *) iov->iov,
1bdc94
                           iov->niov);
1bdc94
 #endif
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
 
1bdc94
     if (iTask.task != NULL) {
1bdc94
         scsi_free_scsi_task(iTask.task);
1bdc94
@@ -694,13 +700,7 @@ retry:
1bdc94
         ret = -ENOMEM;
1bdc94
         goto out_unlock;
1bdc94
     }
1bdc94
-
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
 
1bdc94
     if (iTask.do_retry) {
1bdc94
         if (iTask.task != NULL) {
1bdc94
@@ -864,13 +864,8 @@ retry:
1bdc94
 #if LIBISCSI_API_VERSION < (20160603)
1bdc94
     scsi_task_set_iov_in(iTask.task, (struct scsi_iovec *) iov->iov, iov->niov);
1bdc94
 #endif
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
 
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
     if (iTask.task != NULL) {
1bdc94
         scsi_free_scsi_task(iTask.task);
1bdc94
         iTask.task = NULL;
1bdc94
@@ -907,12 +902,7 @@ retry:
1bdc94
         return -ENOMEM;
1bdc94
     }
1bdc94
 
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
 
1bdc94
     if (iTask.task != NULL) {
1bdc94
         scsi_free_scsi_task(iTask.task);
1bdc94
@@ -1144,12 +1134,7 @@ retry:
1bdc94
         goto out_unlock;
1bdc94
     }
1bdc94
 
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
 
1bdc94
     if (iTask.task != NULL) {
1bdc94
         scsi_free_scsi_task(iTask.task);
1bdc94
@@ -1245,12 +1230,7 @@ retry:
1bdc94
         return -ENOMEM;
1bdc94
     }
1bdc94
 
1bdc94
-    while (!iTask.complete) {
1bdc94
-        iscsi_set_events(iscsilun);
1bdc94
-        qemu_mutex_unlock(&iscsilun->mutex);
1bdc94
-        qemu_coroutine_yield();
1bdc94
-        qemu_mutex_lock(&iscsilun->mutex);
1bdc94
-    }
1bdc94
+    iscsi_co_wait_for_task(&iTask, iscsilun);
1bdc94
 
1bdc94
     if (iTask.status == SCSI_STATUS_CHECK_CONDITION &&
1bdc94
         iTask.task->sense.key == SCSI_SENSE_ILLEGAL_REQUEST &&
1bdc94
-- 
1bdc94
1.8.3.1
1bdc94