[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v17 03/23] block: Respect "force-share" in perm prop
From: |
Fam Zheng |
Subject: |
[Qemu-block] [PATCH v17 03/23] block: Respect "force-share" in perm propagating |
Date: |
Wed, 3 May 2017 00:35:38 +0800 |
Signed-off-by: Fam Zheng <address@hidden>
---
block.c | 32 ++++++++++++++++++++++++--------
1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/block.c b/block.c
index 710ba04..70ca7b4 100644
--- a/block.c
+++ b/block.c
@@ -1467,6 +1467,22 @@ static int bdrv_child_check_perm(BdrvChild *c, uint64_t
perm, uint64_t shared,
static void bdrv_child_abort_perm_update(BdrvChild *c);
static void bdrv_child_set_perm(BdrvChild *c, uint64_t perm, uint64_t shared);
+static void bdrv_child_perm(BlockDriverState *bs, BlockDriverState *child_bs,
+ BdrvChild *c,
+ const BdrvChildRole *role,
+ uint64_t parent_perm, uint64_t parent_shared,
+ uint64_t *nperm, uint64_t *nshared)
+{
+ if (bs->drv && bs->drv->bdrv_child_perm) {
+ bs->drv->bdrv_child_perm(bs, c, role,
+ parent_perm, parent_shared,
+ nperm, nshared);
+ }
+ if (child_bs && child_bs->force_share) {
+ *nshared = BLK_PERM_ALL;
+ }
+}
+
/*
* Check whether permissions on this node can be changed in a way that
* @cumulative_perms and @cumulative_shared_perms are the new cumulative
@@ -1511,9 +1527,9 @@ static int bdrv_check_perm(BlockDriverState *bs, uint64_t
cumulative_perms,
/* Check all children */
QLIST_FOREACH(c, &bs->children, next) {
uint64_t cur_perm, cur_shared;
- drv->bdrv_child_perm(bs, c, c->role,
- cumulative_perms, cumulative_shared_perms,
- &cur_perm, &cur_shared);
+ bdrv_child_perm(bs, c->bs, c, c->role,
+ cumulative_perms, cumulative_shared_perms,
+ &cur_perm, &cur_shared);
ret = bdrv_child_check_perm(c, cur_perm, cur_shared, ignore_children,
errp);
if (ret < 0) {
@@ -1573,9 +1589,9 @@ static void bdrv_set_perm(BlockDriverState *bs, uint64_t
cumulative_perms,
/* Update all children */
QLIST_FOREACH(c, &bs->children, next) {
uint64_t cur_perm, cur_shared;
- drv->bdrv_child_perm(bs, c, c->role,
- cumulative_perms, cumulative_shared_perms,
- &cur_perm, &cur_shared);
+ bdrv_child_perm(bs, c->bs, c, c->role,
+ cumulative_perms, cumulative_shared_perms,
+ &cur_perm, &cur_shared);
bdrv_child_set_perm(c, cur_perm, cur_shared);
}
}
@@ -1910,8 +1926,8 @@ BdrvChild *bdrv_attach_child(BlockDriverState *parent_bs,
assert(parent_bs->drv);
assert(bdrv_get_aio_context(parent_bs) == bdrv_get_aio_context(child_bs));
- parent_bs->drv->bdrv_child_perm(parent_bs, NULL, child_role,
- perm, shared_perm, &perm, &shared_perm);
+ bdrv_child_perm(parent_bs, child_bs, NULL, child_role,
+ perm, shared_perm, &perm, &shared_perm);
child = bdrv_root_attach_child(child_bs, child_name, child_role,
perm, shared_perm, parent_bs, errp);
--
2.9.3
- [Qemu-block] [PATCH v17 00/23] block: Image locking series, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 01/23] block: Make bdrv_perm_names public, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 02/23] block: Add, parse and store "force-share" option, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 03/23] block: Respect "force-share" in perm propagating,
Fam Zheng <=
- [Qemu-block] [PATCH v17 04/23] qemu-img: Add --force-share option to subcommands, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 05/23] qemu-img: Update documentation for -U, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 06/23] qemu-io: Add --force-share option, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 08/23] iotests: 046: Prepare for image locking, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 07/23] iotests: 030: Prepare for image locking, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 09/23] iotests: 055: Don't attach the target image already for drive-backup, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 11/23] iotests: 087: Don't attach test image twice, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 10/23] iotests: 085: Avoid image locking conflict, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 12/23] iotests: 091: Quit QEMU before checking image, Fam Zheng, 2017/05/02
- [Qemu-block] [PATCH v17 13/23] iotests: 172: Use separate images for multiple devices, Fam Zheng, 2017/05/02