27.11.2019 16:15, Max Reitz wrote: > 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 | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/include/block/block.h b/include/block/block.h > index 38963ef203..36817d5689 100644 > --- a/include/block/block.h > +++ b/include/block/block.h > @@ -279,6 +279,44 @@ enum { > DEFAULT_PERM_UNCHANGED = BLK_PERM_ALL & ~DEFAULT_PERM_PASSTHROUGH, > }; > > +typedef enum BdrvChildRole {
Don't you want to call it just BdrvChildFlags ? Benefits: 1. Do not intersect with old BdrvChildRole. 2. I think, BDRV_CHILD_STAY_AT_NODE is not a role, but just a property or flag.. > + /* > + * If present, bdrv_replace_node() will not change the node this > + * BdrvChild points to. > + */ > + BDRV_CHILD_STAY_AT_NODE = (1 << 0), > + > + /* Child stores data */ > + BDRV_CHILD_DATA = (1 << 1), > + > + /* Child stores metadata */ > + BDRV_CHILD_METADATA = (1 << 2), > + > + /* Filtered child */ > + BDRV_CHILD_FILTERED = (1 << 3), > + > + /* Child to COW from (backing child) */ > + BDRV_CHILD_COW = (1 << 4), > + > + /* Child is expected to be a protocol node */ > + BDRV_CHILD_PROTOCOL = (1 << 5), > + > + /* Child is expected to be a format node */ > + BDRV_CHILD_FORMAT = (1 << 6), > + > + /* > + * The primary child. For most drivers, this is the child whose > + * filename applies best to the parent node. > + */ > + BDRV_CHILD_PRIMARY = (1 << 7), > + > + /* Useful combination of flags */ > + BDRV_CHILD_IMAGE = BDRV_CHILD_DATA > + | BDRV_CHILD_METADATA > + | BDRV_CHILD_PROTOCOL > + | BDRV_CHILD_PRIMARY, > +} BdrvChildRole; > + > char *bdrv_perm_names(uint64_t perm); > uint64_t bdrv_qapi_perm_to_blk_perm(BlockPermission qapi_perm); > > -- Best regards, Vladimir