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:55:26 +0100 |
commit | ddebe9d4736d6ebebe601e3691d5378a878df57c (patch) | |
tree | af47901d40b2e38b7752290070cba8886a280dc7 /blockdev.h | |
parent | f17f8b687c789b78bb1f4b53afe5354c748047ed (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>
(cherry picked from commit 84fb392526479d54602a3830326d50d44657f630)
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); |