On 19.03.2021 15:39, David Hildenbrand wrote:
On 18.03.21 18:46, Andrey Gruzdev wrote:
Added missing qemu_fflush() on buffer file holding precopy device state.
Increased initial QIOChannelBuffer allocation to 512KB to avoid reallocs.
Typical configurations often require >200KB for device state and VMDESC.

Signed-off-by: Andrey Gruzdev <andrey.gruz...@virtuozzo.com>
---
  migration/migration.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/migration/migration.c b/migration/migration.c
index 36768391b6..496cf6e17b 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3857,7 +3857,7 @@ static void *bg_migration_thread(void *opaque)
       * with vCPUs running and, finally, write stashed non-RAM part of
       * the vmstate from the buffer to the migration stream.
       */
-    s->bioc = qio_channel_buffer_new(128 * 1024);
+    s->bioc = qio_channel_buffer_new(512 * 1024);

^ would that better be a separate patch? It sounds more like an improvement than a fix.

qio_channel_set_name(QIO_CHANNEL(s->bioc), "vmstate-buffer");
      fb = qemu_fopen_channel_output(QIO_CHANNEL(s->bioc));
      object_unref(OBJECT(s->bioc));
@@ -3911,6 +3911,8 @@ static void *bg_migration_thread(void *opaque)
      if (qemu_savevm_state_complete_precopy_non_iterable(fb, false, false)) {
          goto fail;
      }
+    qemu_fflush(fb);

Fixes: ?

It fixes unflushed QEMUFile, not an improvement. If not flushed, the migrate_get_current()->bioc->data
would stay missing some bytes at the tail.
+
      /* Now initialize UFFD context and start tracking RAM writes */
      if (ram_write_tracking_start()) {
          goto fail;




--
Andrey Gruzdev, Principal Engineer
Virtuozzo GmbH  +7-903-247-6397
                virtuzzo.com


Reply via email to