Message ID | 20151022171252.15633.54658.stgit@bahia.huguette.org |
---|---|
State | New |
Headers | show |
On Thu, 22 Oct 2015 19:38:42 +0200 Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > We don't support migration of mounted 9p shares. This is handled by a > migration blocker. > > One would expect, however, to be able to migrate if the share is unmounted. > Unfortunately virtio-9p-device does not register savevm handlers at all ! > Migration succeeds and leaves the guest with a dangling device... > > This patch simply registers migration handlers for virtio-9p-device. Whether > migration is possible or not still depends on the migration blocker. > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > --- Ping ? > Michael, Aneesh, > > This is the same patch minus the call to unregister_savevm() since we don't > have an unrealize handler. > > I decided to simply drop all the other patches. Hot-unplug support is totally > missing and definitely needs more work. I'll try to come up with a solution > in its own series. > > Cheers. > > -- > Greg > > --- > 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 Thu, 12 Nov 2015 09:28:21 +0100 Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > On Thu, 22 Oct 2015 19:38:42 +0200 > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > We don't support migration of mounted 9p shares. This is handled by a > > migration blocker. > > > > One would expect, however, to be able to migrate if the share is unmounted. > > Unfortunately virtio-9p-device does not register savevm handlers at all ! > > Migration succeeds and leaves the guest with a dangling device... > > > > This patch simply registers migration handlers for virtio-9p-device. Whether > > migration is possible or not still depends on the migration blocker. > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > --- > > Ping ? > > > Michael, Aneesh, > > > > This is the same patch minus the call to unregister_savevm() since we don't > > have an unrealize handler. > > > > I decided to simply drop all the other patches. Hot-unplug support is totally > > missing and definitely needs more work. I'll try to come up with a solution > > in its own series. > > > > Cheers. > > > > -- > > Greg > > > > --- > > 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); Probably dumb question: Is there no state in the V9fsState, or is it simply irrelevant if there are no mounts?
On Thu, 12 Nov 2015 13:50:20 +0100 Cornelia Huck <cornelia.huck@de.ibm.com> wrote: > On Thu, 12 Nov 2015 09:28:21 +0100 > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > On Thu, 22 Oct 2015 19:38:42 +0200 > > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > > > We don't support migration of mounted 9p shares. This is handled by a > > > migration blocker. > > > > > > One would expect, however, to be able to migrate if the share is unmounted. > > > Unfortunately virtio-9p-device does not register savevm handlers at all ! > > > Migration succeeds and leaves the guest with a dangling device... > > > > > > This patch simply registers migration handlers for virtio-9p-device. Whether > > > migration is possible or not still depends on the migration blocker. > > > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > > --- > > > > Ping ? > > > > > Michael, Aneesh, > > > > > > This is the same patch minus the call to unregister_savevm() since we don't > > > have an unrealize handler. > > > > > > I decided to simply drop all the other patches. Hot-unplug support is totally > > > missing and definitely needs more work. I'll try to come up with a solution > > > in its own series. > > > > > > Cheers. > > > > > > -- > > > Greg > > > > > > --- > > > 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); > > Probably dumb question: Is there no state in the V9fsState, or is it > simply irrelevant if there are no mounts? My understanding is that V9fsState has state but it is not used when there are no mounts... maybe worth mentioning in a comment or in the changelog ?
On Thu, 12 Nov 2015 15:25:33 +0100 Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > On Thu, 12 Nov 2015 13:50:20 +0100 > Cornelia Huck <cornelia.huck@de.ibm.com> wrote: > > > On Thu, 12 Nov 2015 09:28:21 +0100 > > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > > > On Thu, 22 Oct 2015 19:38:42 +0200 > > > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > > > > > We don't support migration of mounted 9p shares. This is handled by a > > > > migration blocker. > > > > > > > > One would expect, however, to be able to migrate if the share is unmounted. > > > > Unfortunately virtio-9p-device does not register savevm handlers at all ! > > > > Migration succeeds and leaves the guest with a dangling device... > > > > > > > > This patch simply registers migration handlers for virtio-9p-device. Whether > > > > migration is possible or not still depends on the migration blocker. > > > > > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > > > --- > > > > > > Ping ? > > > > > > > Michael, Aneesh, > > > > > > > > This is the same patch minus the call to unregister_savevm() since we don't > > > > have an unrealize handler. > > > > > > > > I decided to simply drop all the other patches. Hot-unplug support is totally > > > > missing and definitely needs more work. I'll try to come up with a solution > > > > in its own series. > > > > > > > > Cheers. > > > > > > > > -- > > > > Greg > > > > > > > > --- > > > > 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); > > > > Probably dumb question: Is there no state in the V9fsState, or is it > > simply irrelevant if there are no mounts? > > My understanding is that V9fsState has state but it is not used when > there are no mounts... maybe worth mentioning in a comment or in the > changelog ? If V9fsState will look sensible after migration if there are no mounts, I think it's worth adding a comment in the code.
On Thu, 12 Nov 2015 15:39:02 +0100 Cornelia Huck <cornelia.huck@de.ibm.com> wrote: > On Thu, 12 Nov 2015 15:25:33 +0100 > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > On Thu, 12 Nov 2015 13:50:20 +0100 > > Cornelia Huck <cornelia.huck@de.ibm.com> wrote: > > > > > On Thu, 12 Nov 2015 09:28:21 +0100 > > > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > > > > > On Thu, 22 Oct 2015 19:38:42 +0200 > > > > Greg Kurz <gkurz@linux.vnet.ibm.com> wrote: > > > > > > > > > We don't support migration of mounted 9p shares. This is handled by a > > > > > migration blocker. > > > > > > > > > > One would expect, however, to be able to migrate if the share is unmounted. > > > > > Unfortunately virtio-9p-device does not register savevm handlers at all ! > > > > > Migration succeeds and leaves the guest with a dangling device... > > > > > > > > > > This patch simply registers migration handlers for virtio-9p-device. Whether > > > > > migration is possible or not still depends on the migration blocker. > > > > > > > > > > Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> > > > > > --- > > > > > > > > Ping ? > > > > > > > > > Michael, Aneesh, > > > > > > > > > > This is the same patch minus the call to unregister_savevm() since we don't > > > > > have an unrealize handler. > > > > > > > > > > I decided to simply drop all the other patches. Hot-unplug support is totally > > > > > missing and definitely needs more work. I'll try to come up with a solution > > > > > in its own series. > > > > > > > > > > Cheers. > > > > > > > > > > -- > > > > > Greg > > > > > > > > > > --- > > > > > 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); > > > > > > Probably dumb question: Is there no state in the V9fsState, or is it > > > simply irrelevant if there are no mounts? > > > > My understanding is that V9fsState has state but it is not used when > > there are no mounts... maybe worth mentioning in a comment or in the > > changelog ? > > If V9fsState will look sensible after migration if there are no mounts, > I think it's worth adding a comment in the code. Heh Michael just sent a pull request with the current version of the 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);
We don't support migration of mounted 9p shares. This is handled by a migration blocker. One would expect, however, to be able to migrate if the share is unmounted. Unfortunately virtio-9p-device does not register savevm handlers at all ! Migration succeeds and leaves the guest with a dangling device... This patch simply registers migration handlers for virtio-9p-device. Whether migration is possible or not still depends on the migration blocker. Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> --- Michael, Aneesh, This is the same patch minus the call to unregister_savevm() since we don't have an unrealize handler. I decided to simply drop all the other patches. Hot-unplug support is totally missing and definitely needs more work. I'll try to come up with a solution in its own series. Cheers. -- Greg --- hw/9pfs/virtio-9p-device.c | 11 +++++++++++ 1 file changed, 11 insertions(+)