On Fri, Oct 02, 2015 at 04:45:36PM +0300, Michael S. Tsirkin wrote: > From: Greg Kurz <gk...@linux.vnet.ibm.com> > > In a cross-endian setup, the virtio-9p device has state in @device_endian. It > must be migrated. This patch just adds the minimal support to live migrate > generic virtio subsections where @device_endian is handled. > > Please note that this is unrelated to the fact that we block migration when > the 9p share is mounted in the guest. It fixes the case where we want to > migrate an unactive 9p device (not mounted in the guest) to a QEMU with > different endianness: the migration currently succeeds but leaves the device > in an inconsistent state that causes mount to hang until we reboot the guest. > > Signed-off-by: Greg Kurz <gk...@linux.vnet.ibm.com> > Reviewed-by: Michael S. Tsirkin <m...@redhat.com> > Signed-off-by: Michael S. Tsirkin <m...@redhat.com>
I rebased and dropped this at Greg's request. > --- > hw/9pfs/virtio-9p-device.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c > index 93a407c..e3abcfa 100644 > --- a/hw/9pfs/virtio-9p-device.c > +++ b/hw/9pfs/virtio-9p-device.c > @@ -43,6 +43,16 @@ static void virtio_9p_get_config(VirtIODevice *vdev, > uint8_t *config) > g_free(cfg); > } > > +static void virtio_9p_save(QEMUFile *f, void *opaque) > +{ > + virtio_save(VIRTIO_DEVICE(opaque), f); > +} > + > +static int virtio_9p_load(QEMUFile *f, void *opaque, int version_id) > +{ > + return virtio_load(VIRTIO_DEVICE(opaque), f, version_id); > +} > + > static void virtio_9p_device_realize(DeviceState *dev, Error **errp) > { > VirtIODevice *vdev = VIRTIO_DEVICE(dev); > @@ -130,6 +140,7 @@ static void virtio_9p_device_realize(DeviceState *dev, > Error **errp) > } > v9fs_path_free(&path); > > + register_savevm(dev, "virtio-9p", -1, 1, virtio_9p_save, virtio_9p_load, > s); > return; > out: > g_free(s->ctx.fs_root); > -- > MST >