Message ID | 20150918142446.17211.7965.stgit@bahia.huguette.org |
---|---|
State | New |
Headers | show |
Greg Kurz <gkurz@linux.vnet.ibm.com> writes: > In a cross-endian setup, the virtio-9p device has state in @device_endian. It > must be migrated. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> With 9p mounted, we don't support qemu migration. We still have migration blocker added in v9fs_attach. > --- > 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 93a407c45926..e3abcfaffb2a 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);
Greg Kurz <gkurz@linux.vnet.ibm.com> writes: > In a cross-endian setup, the virtio-9p device has state in @device_endian. It > must be migrated. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> With 9p mounted, we don't support qemu migration. We have migration blocker added in v9fs_attach. > --- > 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 93a407c45926..e3abcfaffb2a 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);
On Sat, 19 Sep 2015 15:34:02 +0530 "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> wrote: > Greg Kurz <gkurz@linux.vnet.ibm.com> writes: > > > In a cross-endian setup, the virtio-9p device has state in @device_endian. It > > must be migrated. > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > With 9p mounted, we don't support qemu migration. We have > migration blocker added in v9fs_attach. > Ok I should have been more precise... If you unmount the 9p share, then migrate, then try to remount, you end up with a hung mount command because @device_endian has the wrong value... > > --- > > 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 93a407c45926..e3abcfaffb2a 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);
On Mon, 21 Sep 2015 10:09:34 +0200 Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > On Sat, 19 Sep 2015 15:34:02 +0530 > "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com> wrote: > > > Greg Kurz <gkurz@linux.vnet.ibm.com> writes: > > > > > In a cross-endian setup, the virtio-9p device has state in @device_endian. It > > > must be migrated. > > > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > > > With 9p mounted, we don't support qemu migration. We have > > migration blocker added in v9fs_attach. > > > > Ok I should have been more precise... If you unmount the 9p share, then > migrate, then try to remount, you end up with a hung mount command because > @device_endian has the wrong value... > Michael ? Any input ? > > > --- > > > 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 93a407c45926..e3abcfaffb2a 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); > >
diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c index 93a407c45926..e3abcfaffb2a 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);
In a cross-endian setup, the virtio-9p device has state in @device_endian. It must be migrated. Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> --- hw/9pfs/virtio-9p-device.c | 11 +++++++++++ 1 file changed, 11 insertions(+)