block: Request real permissions in bdrv_attach_child()

Now that all block drivers with children tell us what permissions they
need from each of their children, bdrv_attach_child() can use this
information and make the right requirements while trying to attach new
children.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Acked-by: Fam Zheng <famz@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Kevin Wolf 2016-12-20 15:51:12 +01:00
parent 78e421c9fb
commit f68c598be6
1 changed files with 8 additions and 2 deletions

10
block.c
View File

@ -1680,10 +1680,16 @@ BdrvChild *bdrv_attach_child(BlockDriverState *parent_bs,
Error **errp)
{
BdrvChild *child;
uint64_t perm, shared_perm;
bdrv_get_cumulative_perm(parent_bs, &perm, &shared_perm);
assert(parent_bs->drv);
parent_bs->drv->bdrv_child_perm(parent_bs, NULL, child_role,
perm, shared_perm, &perm, &shared_perm);
/* FIXME Use real permissions */
child = bdrv_root_attach_child(child_bs, child_name, child_role,
0, BLK_PERM_ALL, parent_bs, errp);
perm, shared_perm, parent_bs, errp);
if (child == NULL) {
return NULL;
}