summaryrefslogtreecommitdiff
path: root/blockdev.h
diff options
context:
space:
mode:
authorMarcelo Tosatti <mtosatti@redhat.com>2011-01-26 12:12:32 -0200
committerKevin Wolf <kwolf@redhat.com>2011-02-07 12:51:19 +0100
commit84fb392526479d54602a3830326d50d44657f630 (patch)
tree7830ed6ba76129d609f69ee31a1e14c21bea517e /blockdev.h
parent8f794c557c4b51c7a957d47ef6a2230114bb9e79 (diff)
downloadqemu-84fb392526479d54602a3830326d50d44657f630.tar.gz
qemu-84fb392526479d54602a3830326d50d44657f630.tar.bz2
qemu-84fb392526479d54602a3830326d50d44657f630.zip
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 <mtosatti@redhat.com> CC: Markus Armbruster <armbru@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'blockdev.h')
-rw-r--r--blockdev.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/blockdev.h b/blockdev.h
index 84e462ab3f..2c9e7804c9 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);