This enum will supplement BdrvChildClass when it comes to what role (or combination of roles) a child takes for its parent.
Because empty enums are not allowed, let us just start with it filled. Signed-off-by: Max Reitz <mre...@redhat.com> --- include/block/block.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/include/block/block.h b/include/block/block.h index 38963ef203..0f7e8caa5b 100644 --- a/include/block/block.h +++ b/include/block/block.h @@ -279,6 +279,33 @@ enum { DEFAULT_PERM_UNCHANGED = BLK_PERM_ALL & ~DEFAULT_PERM_PASSTHROUGH, }; +typedef enum BdrvChildRole { + /* Child stores data */ + BDRV_CHILD_DATA = (1 << 0), + + /* Child stores metadata */ + BDRV_CHILD_METADATA = (1 << 1), + + /* Filtered child */ + BDRV_CHILD_FILTERED = (1 << 2), + + /* Child to COW from (backing child) */ + BDRV_CHILD_COW = (1 << 3), + + /* + * The primary child. For most drivers, this is the child whose + * filename applies best to the parent node. + * Each parent must give this flag to no more than one child at a + * time. + */ + BDRV_CHILD_PRIMARY = (1 << 4), + + /* Useful combination of flags */ + BDRV_CHILD_IMAGE = BDRV_CHILD_DATA + | BDRV_CHILD_METADATA + | BDRV_CHILD_PRIMARY, +} BdrvChildRole; + char *bdrv_perm_names(uint64_t perm); uint64_t bdrv_qapi_perm_to_blk_perm(BlockPermission qapi_perm); -- 2.24.1