On Mon, Aug 09, 2021 at 06:09:56PM +0100, Dr. David Alan Gilbert (git) wrote: > From: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > > The audio migration vmstate is empty, and always has been; we can't > just remove it though because an old qemu might send it us. > Changes with -audiodev now mean it's sometimes created when it didn't > used to be, and can confuse migration to old qemu. > > Change it so that vmstate_audio is never sent; if it's received it > should still be accepted, and old qemu's shouldn't be too upset if it's > missing. > > Signed-off-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > --- > audio/audio.c | 10 ++++++++++ > 1 file changed, 10 insertions(+)
Reviewed-by: Daniel P. Berrangé <berra...@redhat.com> Tested-by: Daniel P. Berrangé <berra...@redhat.com> For testing I have a VM with -audiodev, but *WITHOUT* any sound frontend devices. Live migrating to a QEMU using QEMU_AUDIO_DRV would previously fail. With this applied it now works, showing that we dont uncessarily send this. I also tested migration to a QEMU with -audiodev, but without this patch, and that still works as before, showing that QEMU is happy if this section is not sent. > > diff --git a/audio/audio.c b/audio/audio.c > index 59453ef856..54a153c0ef 100644 > --- a/audio/audio.c > +++ b/audio/audio.c > @@ -1622,10 +1622,20 @@ void audio_cleanup(void) > } > } > > +static bool vmstate_audio_needed(void *opaque) > +{ > + /* > + * Never needed, this vmstate only exists in case > + * an old qemu sends it to us. > + */ > + return false; > +} > + > static const VMStateDescription vmstate_audio = { > .name = "audio", > .version_id = 1, > .minimum_version_id = 1, > + .needed = vmstate_audio_needed, > .fields = (VMStateField[]) { > VMSTATE_END_OF_LIST() > } > -- > 2.31.1 > Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|