diff mbox

virtio-9p: migrate virtio subsections

Message ID 20150918142446.17211.7965.stgit@bahia.huguette.org
State New
Headers show

Commit Message

Greg Kurz Sept. 18, 2015, 2:24 p.m. UTC
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(+)

Comments

Aneesh Kumar K.V Sept. 19, 2015, 10:02 a.m. UTC | #1
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);
Aneesh Kumar K.V Sept. 19, 2015, 10:04 a.m. UTC | #2
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);
Greg Kurz Sept. 21, 2015, 8:09 a.m. UTC | #3
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);
Greg Kurz Sept. 24, 2015, 8 a.m. UTC | #4
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 mbox

Patch

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);