virtio-blk: Create exit function to unregister savevm
PATCH 1/1 virtio-blk: Create exit function to unregister savevm
Otherwise we can't migrate after we've removed a virtio block device.
Signed-off-by Alex Williamson <[email protected]>
---
hw/virtio-blk.c | 8 ++++++++ hw/virtio-pci.c | 1 + hw/virtio.h | 1 + 3 files changed, 10 insertions(+), 0 deletions(-)
hw/virtio-blk.c +8 -0
@@ -28,6 +28,7 @@ typedef struct VirtIOBlockBlockConf *conf;unsigned short sector_mask;char sn[BLOCK_SERIAL_STRLEN ]; +DeviceState *qdev; } VirtIOBlock;static VirtIOBlock *to_virtio_blk (VirtIODevice *vdev)
@@ -522,9 +523,16 @@ VirtIODevice *virtio_blk_init(DeviceState *dev, BlockConf *conf) s->vq =virtio_add_queue (&s->vdev,128 , virtio_blk_handle_output);qemu_add_vm_change_state_handler (virtio_blk_dma_restart_cb, s); + s->qdev = dev;register_savevm (dev,"virtio-blk" , virtio_blk_id++,2 , virtio_blk_save, virtio_blk_load, s);bdrv_set_removable (s->bs,0 );return &s->vdev; } + +void virtio_blk_exit (VirtIODevice *vdev) +{ +VirtIOBlock *s =to_virtio_blk (vdev); +unregister_savevm (s->qdev,"virtio-blk" , s); +}
hw/virtio-pci.c +1 -0
@@ -569,6 +569,7 @@ static int virtio_blk_exit_pci(PCIDevice *pci_dev) {VirtIOPCIProxy *proxy =DO_UPCAST (VirtIOPCIProxy, pci_dev, pci_dev); +virtio_blk_exit (proxy->vdev);blockdev_mark_auto_del (proxy->block.bs);return virtio_exit_pci (pci_dev); }
hw/virtio.h +1 -0
@@ -194,6 +194,7 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf);void virtio_net_exit (VirtIODevice *vdev); +void virtio_blk_exit (VirtIODevice *vdev);#define DEFINE_VIRTIO_COMMON_FEATURES (_state, _field) \ DEFINE_PROP_BIT("indirect_desc", _state, _field, \
Kevin Wolf
AppliedAm 20.07.2010 19:14, schrieb Alex Williamson:
Quoted 3 lines
Otherwise we can't migrate after we've removed a virtio block device.
Signed-off-by Alex Williamson <[email protected]>
Thanks, applied to the block branch.
Kevin