diff options
| author | Marcelo Tosatti | 2011-01-26 15:12:34 +0100 |
|---|---|---|
| committer | Kevin Wolf | 2011-02-07 12:51:19 +0100 |
| commit | db593f2565dc12442d6bac9e8eaefa027dfcada9 (patch) | |
| tree | 0d7d11a025b200752ef2f7907ddedfc1bf4e545b | |
| parent | block-migration: add reference to target DriveInfo (diff) | |
| download | qemu-db593f2565dc12442d6bac9e8eaefa027dfcada9.tar.gz qemu-db593f2565dc12442d6bac9e8eaefa027dfcada9.tar.xz qemu-db593f2565dc12442d6bac9e8eaefa027dfcada9.zip | |
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; }; |
