]> git.ipfire.org Git - thirdparty/qemu.git/commit
block: Add bdrv_child_refresh_perms()
authorMax Reitz <mreitz@redhat.com>
Wed, 22 May 2019 17:03:46 +0000 (19:03 +0200)
committerKevin Wolf <kwolf@redhat.com>
Tue, 18 Jun 2019 14:41:10 +0000 (16:41 +0200)
commitc1087f12066a1ff34153dd10662c1a46a874087c
tree11bcae3d454cd19afb63da0c8047e9326e4456ff
parent094e36394481fd2c8493cec2a7c026f342232f15
block: Add bdrv_child_refresh_perms()

If a block node uses bdrv_child_try_set_perm() to change the permission
it takes on its child, the result may be very short-lived.  If anything
makes the block layer recalculate the permissions internally, it will
invoke the node driver's .bdrv_child_perm() implementation.  The
permission/shared permissions masks that returns will then override the
values previously passed to bdrv_child_try_set_perm().

If drivers want a child edge to have specific values for the
permissions/shared permissions mask, it must return them in
.bdrv_child_perm().  Consequentially, there is no need for them to pass
the same values to bdrv_child_try_set_perm() then: It is better to have
a function that invokes .bdrv_child_perm() and calls
bdrv_child_try_set_perm() with the result.  This patch adds such a
function under the name of bdrv_child_refresh_perms().

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c
include/block/block_int.h