summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcelo Tosatti <mtosatti@redhat.com>2011-01-26 12:12:34 -0200
committerKevin Wolf <kwolf@redhat.com>2011-02-07 12:55:29 +0100
commit44d631a001edf558d81f4d49c99c5496a949ff3a (patch)
treea4bf247d0bf7cc3c8df464e2cae3004c86ee1220
parent28b0e1cd0e6de3ac4728b3f5d45237d054d2f4a7 (diff)
downloadqemu-44d631a001edf558d81f4d49c99c5496a949ff3a.tar.gz
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.c11
-rw-r--r--block.h2
-rw-r--r--block_int.h1
3 files changed, 14 insertions, 0 deletions
diff --git a/block.c b/block.c
index 998df1b54b..ee9edfce2c 100644
--- a/block.c
+++ b/block.c
@@ -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)
diff --git a/block.h b/block.h
index 239f729580..19f4768873 100644
--- a/block.h
+++ b/block.h
@@ -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;
};