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:55:29 +0100 |
commit | 44d631a001edf558d81f4d49c99c5496a949ff3a (patch) | |
tree | a4bf247d0bf7cc3c8df464e2cae3004c86ee1220 | |
parent | 28b0e1cd0e6de3ac4728b3f5d45237d054d2f4a7 (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>
(cherry picked from commit db593f2565dc12442d6bac9e8eaefa027dfcada9)
-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; }; |