On 06.04.2021 15:29, Dr. David Alan Gilbert wrote: > * Andrey Gruzdev (andrey.gruzdev@virtuozzo.com) 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. >> >> Fixes: 8518278a6af589ccc401f06e35f171b1e6fae800 (migration: implementation >> of background snapshot thread) >> Signed-off-by: Andrey Gruzdev > Reviewed-by: Dr. David Alan Gilbert > > OK, but in future, please keep separate things separate - the buffer > size increase in particular. Got it, thanks. >> --- >> migration/migration.c | 8 +++++++- >> 1 file changed, 7 insertions(+), 1 deletion(-) >> >> diff --git a/migration/migration.c b/migration/migration.c >> index ca8b97baa5..00e13f9d58 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; >> -- >> 2.27.0 >> >> -- Andrey Gruzdev, Principal Engineer Virtuozzo GmbH +7-903-247-6397 virtuzzo.com