qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 02/20] vfio/migration: Refactor vfio_save_block() to retur


From: Cédric Le Goater
Subject: Re: [PATCH v2 02/20] vfio/migration: Refactor vfio_save_block() to return saved data size
Date: Mon, 27 Feb 2023 15:10:16 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.2

On 2/22/23 18:48, Avihai Horon wrote:
Refactor vfio_save_block() to return the size of saved data on success
and -errno on error.

This will be used in next patch to implement VFIO migration pre-copy
support.

Signed-off-by: Avihai Horon <avihaih@nvidia.com>

LGTM

Reviewed-by: Cédric Le Goater <clg@redhat.com>

Thanks,

C.

---
  hw/vfio/migration.c | 17 +++++++++--------
  1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c
index 4fb7d01532..94a4df73d0 100644
--- a/hw/vfio/migration.c
+++ b/hw/vfio/migration.c
@@ -240,8 +240,8 @@ static int vfio_query_stop_copy_size(VFIODevice *vbasedev,
      return 0;
  }
-/* Returns 1 if end-of-stream is reached, 0 if more data and -errno if error */
-static int vfio_save_block(QEMUFile *f, VFIOMigration *migration)
+/* Returns the size of saved data on success and -errno on error */
+static ssize_t vfio_save_block(QEMUFile *f, VFIOMigration *migration)
  {
      ssize_t data_size;
@@ -251,7 +251,7 @@ static int vfio_save_block(QEMUFile *f, VFIOMigration *migration)
          return -errno;
      }
      if (data_size == 0) {
-        return 1;
+        return 0;
      }
qemu_put_be64(f, VFIO_MIG_FLAG_DEV_DATA_STATE);
@@ -261,7 +261,7 @@ static int vfio_save_block(QEMUFile *f, VFIOMigration 
*migration)
trace_vfio_save_block(migration->vbasedev->name, data_size); - return qemu_file_get_error(f);
+    return qemu_file_get_error(f) ?: data_size;
  }
/* ---------------------------------------------------------------------- */
@@ -335,6 +335,7 @@ static void vfio_state_pending_exact(void *opaque, uint64_t 
threshold_size,
  static int vfio_save_complete_precopy(QEMUFile *f, void *opaque)
  {
      VFIODevice *vbasedev = opaque;
+    ssize_t data_size;
      int ret;
/* We reach here with device state STOP only */
@@ -345,11 +346,11 @@ static int vfio_save_complete_precopy(QEMUFile *f, void 
*opaque)
      }
do {
-        ret = vfio_save_block(f, vbasedev->migration);
-        if (ret < 0) {
-            return ret;
+        data_size = vfio_save_block(f, vbasedev->migration);
+        if (data_size < 0) {
+            return data_size;
          }
-    } while (!ret);
+    } while (data_size);
qemu_put_be64(f, VFIO_MIG_FLAG_END_OF_STATE);
      ret = qemu_file_get_error(f);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]