From 84fb392526479d54602a3830326d50d44657f630 Mon Sep 17 00:00:00 2001 From: Marcelo Tosatti Date: Wed, 26 Jan 2011 12:12:32 -0200 Subject: blockdev: add refcount to DriveInfo The host part of a block device can be deleted with in progress block migration. To fix this, add a reference count to DriveInfo, freeing resources on last reference. Signed-off-by: Marcelo Tosatti CC: Markus Armbruster Signed-off-by: Kevin Wolf --- blockdev.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'blockdev.h') diff --git a/blockdev.h b/blockdev.h index 84e462a..2c9e780 100644 --- a/blockdev.h +++ b/blockdev.h @@ -36,13 +36,15 @@ struct DriveInfo { QemuOpts *opts; char serial[BLOCK_SERIAL_STRLEN + 1]; QTAILQ_ENTRY(DriveInfo) next; + int refcount; }; DriveInfo *drive_get(BlockInterfaceType type, int bus, int unit); DriveInfo *drive_get_by_index(BlockInterfaceType type, int index); int drive_get_max_bus(BlockInterfaceType type); DriveInfo *drive_get_next(BlockInterfaceType type); -void drive_uninit(DriveInfo *dinfo); +void drive_get_ref(DriveInfo *dinfo); +void drive_put_ref(DriveInfo *dinfo); DriveInfo *drive_get_by_blockdev(BlockDriverState *bs); QemuOpts *drive_def(const char *optstr); -- cgit v1.1