diff options
author | Marcelo Tosatti <mtosatti@redhat.com> | 2011-01-26 12:12:34 -0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-02-07 12:51:19 +0100 |
commit | db593f2565dc12442d6bac9e8eaefa027dfcada9 (patch) | |
tree | 0d7d11a025b200752ef2f7907ddedfc1bf4e545b | |
parent | f48905d44f670cd83227b3a8d06ae1406f0c771c (diff) |
Add flag to indicate external users to block device
Certain operations such as drive_del or resize cannot be performed
while external users (eg. block migration) reference the block device.
Add a flag to indicate that.
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
-rw-r--r-- | block.c | 11 | ||||
-rw-r--r-- | block.h | 2 | ||||
-rw-r--r-- | block_int.h | 1 |
3 files changed, 14 insertions, 0 deletions
@@ -2774,6 +2774,17 @@ int64_t bdrv_get_dirty_count(BlockDriverState *bs) return bs->dirty_count; } +void bdrv_set_in_use(BlockDriverState *bs, int in_use) +{ + assert(bs->in_use != in_use); + bs->in_use = in_use; +} + +int bdrv_in_use(BlockDriverState *bs) +{ + return bs->in_use; +} + int bdrv_img_create(const char *filename, const char *fmt, const char *base_filename, const char *base_fmt, char *options, uint64_t img_size, int flags) @@ -241,6 +241,8 @@ void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector, int nr_sectors); int64_t bdrv_get_dirty_count(BlockDriverState *bs); +void bdrv_set_in_use(BlockDriverState *bs, int in_use); +int bdrv_in_use(BlockDriverState *bs); typedef enum { BLKDBG_L1_UPDATE, diff --git a/block_int.h b/block_int.h index 6ebdc3eea2..545ad11ff3 100644 --- a/block_int.h +++ b/block_int.h @@ -199,6 +199,7 @@ struct BlockDriverState { char device_name[32]; unsigned long *dirty_bitmap; int64_t dirty_count; + int in_use; /* users other than guest access, eg. block migration */ QTAILQ_ENTRY(BlockDriverState) list; void *private; }; |