* Andrey Gruzdev (andrey.gruz...@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 <andrey.gruz...@virtuozzo.com>
Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com> OK, but in future, please keep separate things separate - the buffer size increase in particular. > --- > 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 > > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK