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: 8518278a6a
(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>
This commit is contained in:
parent
99c3ac6dbe
commit
ecb23efea0
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user