diff options
author | Andrey Gruzdev <andrey.gruzdev@virtuozzo.com> | 2021-04-01 12:22:23 +0300 |
---|---|---|
committer | Dr. David Alan Gilbert <dgilbert@redhat.com> | 2021-04-06 18:56:01 +0100 |
commit | ecb23efea0899be6723f4ea9636de5cf7de90cfe (patch) | |
tree | 4046c7b13bf94ad4f793997e4f28ddabfbfa6b25 /migration | |
parent | 99c3ac6dbe18cdab3686a830d129f8fa586846bb (diff) | |
download | qemu-ecb23efea0899be6723f4ea9636de5cf7de90cfe.zip qemu-ecb23efea0899be6723f4ea9636de5cf7de90cfe.tar.gz qemu-ecb23efea0899be6723f4ea9636de5cf7de90cfe.tar.bz2 |
migration: Fix missing qemu_fflush() on buffer file in bg_migration_thread
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.
Fixes: 8518278a6af589ccc401f06e35f171b1e6fae800 (migration: implementation
of background snapshot thread)
Signed-off-by: Andrey Gruzdev <andrey.gruzdev@virtuozzo.com>
Message-Id: <20210401092226.102804-2-andrey.gruzdev@virtuozzo.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Diffstat (limited to 'migration')
-rw-r--r-- | migration/migration.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/migration/migration.c b/migration/migration.c index ca8b97b..00e13f9 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3812,7 +3812,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); qio_channel_set_name(QIO_CHANNEL(s->bioc), "vmstate-buffer"); fb = qemu_fopen_channel_output(QIO_CHANNEL(s->bioc)); object_unref(OBJECT(s->bioc)); @@ -3866,6 +3866,12 @@ static void *bg_migration_thread(void *opaque) if (qemu_savevm_state_complete_precopy_non_iterable(fb, false, false)) { goto fail; } + /* + * Since we are going to get non-iterable state data directly + * from s->bioc->data, explicit flush is needed here. + */ + qemu_fflush(fb); + /* Now initialize UFFD context and start tracking RAM writes */ if (ram_write_tracking_start()) { goto fail; |