diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2011-01-26 12:12:32 -0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-02-07 12:51:19 +0100 |
commit | 84fb392526479d54602a3830326d50d44657f630 (patch) | |
tree | 7830ed6ba76129d609f69ee31a1e14c21bea517e /blockdev.h | |
parent | 8f794c557c4b51c7a957d47ef6a2230114bb9e79 (diff) |
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.h | 4 |
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); |