On 15.01.20 23:40, Julia Suvorova wrote: > Hot-unplug takes some time due to communication with the guest. > Do not change the device while freeing up resources. > > Signed-off-by: Julia Suvorova <jus...@redhat.com> > --- > balloon.c | 2 +- > hw/virtio/virtio-balloon.c | 9 ++++++++- > include/sysemu/balloon.h | 2 +- > 3 files changed, 10 insertions(+), 3 deletions(-) > > diff --git a/balloon.c b/balloon.c > index f104b42961..998ec53a0f 100644 > --- a/balloon.c > +++ b/balloon.c > @@ -119,5 +119,5 @@ void qmp_balloon(int64_t target, Error **errp) > } > > trace_balloon_event(balloon_opaque, target); > - balloon_event_fn(balloon_opaque, target); > + balloon_event_fn(balloon_opaque, target, errp); > } > diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c > index 57f3b9f22d..0fa4e4454b 100644 > --- a/hw/virtio/virtio-balloon.c > +++ b/hw/virtio/virtio-balloon.c > @@ -717,12 +717,19 @@ static void virtio_balloon_stat(void *opaque, > BalloonInfo *info) > VIRTIO_BALLOON_PFN_SHIFT); > } > > -static void virtio_balloon_to_target(void *opaque, ram_addr_t target) > +static void virtio_balloon_to_target(void *opaque, ram_addr_t target, > + Error **errp) > { > + DeviceState *bus_dev = qdev_get_bus_device(DEVICE(opaque)); > VirtIOBalloon *dev = VIRTIO_BALLOON(opaque); > VirtIODevice *vdev = VIRTIO_DEVICE(dev); > ram_addr_t vm_ram_size = get_current_ram_size(); > > + if (bus_dev && bus_dev->pending_deleted_event) { > + error_setg(errp, "Hot-unplug of %s is in progress", vdev->name); > + return; > + } > +
How exactly does this help? The guest is free to inflate/deflate whenever it wants. -- Thanks, David / dhildenb