[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-stable] [PATCH 28/37] virtio-blk: fix unplug + virsh reboot
From: |
Michael Roth |
Subject: |
[Qemu-stable] [PATCH 28/37] virtio-blk: fix unplug + virsh reboot |
Date: |
Tue, 2 Apr 2013 16:45:33 -0500 |
From: Christian Borntraeger <address@hidden>
virtio-blk registers a vmstate change handler. Unfortunately this
handler is not unregistered on unplug, leading to some random
crashes if the system is restarted, e.g. via virsh reboot.
Lets unregister the vmstate change handler if the device is removed.
Signed-off-by: Christian Borntraeger <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
(cherry picked from commit 69b302b2044a9a0f6d157d25b39a91ff7124c61f)
Signed-off-by: Michael Roth <address@hidden>
---
hw/virtio-blk.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
index 34913ee..f5e6ee9 100644
--- a/hw/virtio-blk.c
+++ b/hw/virtio-blk.c
@@ -36,6 +36,7 @@ typedef struct VirtIOBlock
VirtIOBlkConf *blk;
unsigned short sector_mask;
DeviceState *qdev;
+ VMChangeStateEntry *change;
#ifdef CONFIG_VIRTIO_BLK_DATA_PLANE
VirtIOBlockDataPlane *dataplane;
#endif
@@ -681,7 +682,7 @@ VirtIODevice *virtio_blk_init(DeviceState *dev,
VirtIOBlkConf *blk)
}
#endif
- qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s);
+ s->change = 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);
@@ -702,6 +703,7 @@ void virtio_blk_exit(VirtIODevice *vdev)
virtio_blk_data_plane_destroy(s->dataplane);
s->dataplane = NULL;
#endif
+ qemu_del_vm_change_state_handler(s->change);
unregister_savevm(s->qdev, "virtio-blk", s);
blockdev_mark_auto_del(s->bs);
virtio_cleanup(vdev);
--
1.7.9.5
- [Qemu-stable] [PATCH 29/37] Fix page_cache leak in cache_resize, (continued)
- [Qemu-stable] [PATCH 31/37] qcow2: flush refcount cache correctly in alloc_refcount_block(), Michael Roth, 2013/04/02
- [Qemu-stable] [PATCH 37/37] update seabios to 1.7.2.1, Michael Roth, 2013/04/02
- [Qemu-stable] [PATCH 30/37] page_cache: fix memory leak, Michael Roth, 2013/04/02
- [Qemu-stable] [PATCH 32/37] qcow2: flush refcount cache correctly in qcow2_write_snapshots(), Michael Roth, 2013/04/02
- [Qemu-stable] [PATCH 27/37] ide/macio: Fix macio DMA initialisation., Michael Roth, 2013/04/02
- [Qemu-stable] [PATCH 28/37] virtio-blk: fix unplug + virsh reboot,
Michael Roth <=
- Re: [Qemu-stable] [Qemu-devel] Patch Round-up for stable 1.4.1, freeze next Tuesday, Aurelien Jarno, 2013/04/03
- Re: [Qemu-stable] Patch Round-up for stable 1.4.1, freeze next Tuesday, Bruce Rogers, 2013/04/03
- Re: [Qemu-stable] [Qemu-devel] Patch Round-up for stable 1.4.1, freeze next Tuesday, Cole Robinson, 2013/04/03
- Re: [Qemu-stable] [Qemu-devel] Patch Round-up for stable 1.4.1, freeze next Tuesday, Peter Lieven, 2013/04/04
- Re: [Qemu-stable] Patch Round-up for stable 1.4.1, freeze next Tuesday, Paolo Bonzini, 2013/04/04
- Re: [Qemu-stable] Patch Round-up for stable 1.4.1, freeze next Tuesday, mdroth, 2013/04/05