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>
This commit is contained in:
parent
f48905d44f
commit
db593f2565
11
block.c
11
block.c
@ -2774,6 +2774,17 @@ int64_t bdrv_get_dirty_count(BlockDriverState *bs)
|
|||||||
return bs->dirty_count;
|
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,
|
int bdrv_img_create(const char *filename, const char *fmt,
|
||||||
const char *base_filename, const char *base_fmt,
|
const char *base_filename, const char *base_fmt,
|
||||||
char *options, uint64_t img_size, int flags)
|
char *options, uint64_t img_size, int flags)
|
||||||
|
2
block.h
2
block.h
@ -241,6 +241,8 @@ void bdrv_reset_dirty(BlockDriverState *bs, int64_t cur_sector,
|
|||||||
int nr_sectors);
|
int nr_sectors);
|
||||||
int64_t bdrv_get_dirty_count(BlockDriverState *bs);
|
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 {
|
typedef enum {
|
||||||
BLKDBG_L1_UPDATE,
|
BLKDBG_L1_UPDATE,
|
||||||
|
@ -199,6 +199,7 @@ struct BlockDriverState {
|
|||||||
char device_name[32];
|
char device_name[32];
|
||||||
unsigned long *dirty_bitmap;
|
unsigned long *dirty_bitmap;
|
||||||
int64_t dirty_count;
|
int64_t dirty_count;
|
||||||
|
int in_use; /* users other than guest access, eg. block migration */
|
||||||
QTAILQ_ENTRY(BlockDriverState) list;
|
QTAILQ_ENTRY(BlockDriverState) list;
|
||||||
void *private;
|
void *private;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user