[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/16] introduce a new API to check if blk is attach
From: |
Wen Congyang |
Subject: |
[Qemu-devel] [PATCH 02/16] introduce a new API to check if blk is attached |
Date: |
Wed, 2 Sep 2015 16:51:06 +0800 |
Signed-off-by: Wen Congyang <address@hidden>
---
block.c | 4 ++--
block/block-backend.c | 9 +++++++++
include/sysemu/block-backend.h | 1 +
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/block.c b/block.c
index 0f9029b..aeb365b 100644
--- a/block.c
+++ b/block.c
@@ -2089,7 +2089,7 @@ void bdrv_swap(BlockDriverState *bs_new, BlockDriverState
*bs_old)
}
/* bs_new must be unattached and shouldn't have anything fancy enabled */
- assert(!bs_new->blk);
+ assert(!blk_is_attached(bs_new->blk));
assert(QLIST_EMPTY(&bs_new->dirty_bitmaps));
assert(bs_new->job == NULL);
assert(bs_new->io_limits_enabled == false);
@@ -2106,7 +2106,7 @@ void bdrv_swap(BlockDriverState *bs_new, BlockDriverState
*bs_old)
bdrv_move_feature_fields(bs_new, &tmp);
/* bs_new must remain unattached */
- assert(!bs_new->blk);
+ assert(!blk_is_attached(bs_new->blk));
/* Check a few fields that should remain attached to the device */
assert(bs_new->job == NULL);
diff --git a/block/block-backend.c b/block/block-backend.c
index 72d8b2c..1463c37 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -368,6 +368,15 @@ void blk_enable_attach_dev(BlockBackend *blk)
}
/*
+ * Return true if a device model is attached to @blk already,
+ * otherwise, return false.
+ */
+bool blk_is_attached(BlockBackend *blk)
+{
+ return blk != NULL && blk->dev != NULL && blk->dev != (void *)-1;
+}
+
+/*
* Set @blk's device model callbacks to @ops.
* @opaque is the opaque argument to pass to the callbacks.
* This is for use by device models.
diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
index 7619a9f..a8c6fd2 100644
--- a/include/sysemu/block-backend.h
+++ b/include/sysemu/block-backend.h
@@ -82,6 +82,7 @@ void blk_detach_dev(BlockBackend *blk, void *dev);
void *blk_get_attached_dev(BlockBackend *blk);
int blk_disable_attach_dev(BlockBackend *blk);
void blk_enable_attach_dev(BlockBackend *blk);
+bool blk_is_attached(BlockBackend *blk);
void blk_set_dev_ops(BlockBackend *blk, const BlockDevOps *ops, void *opaque);
int blk_read(BlockBackend *blk, int64_t sector_num, uint8_t *buf,
int nb_sectors);
--
2.4.3