[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 26/51] block: Add child_of_bds
From: |
Kevin Wolf |
Subject: |
[PULL 26/51] block: Add child_of_bds |
Date: |
Fri, 15 May 2020 14:44:56 +0200 |
From: Max Reitz <address@hidden>
Any current user of child_file, child_format, and child_backing can and
should use this generic BdrvChildClass instead, as it can handle all of
these cases. However, to be able to do so, the users must pass the
appropriate BdrvChildRole when the child is created/attached. (The
following commits will take care of that.)
Signed-off-by: Max Reitz <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
include/block/block_int.h | 1 +
block.c | 24 ++++++++++++++++++++++++
2 files changed, 25 insertions(+)
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 6245d8a18d..54df821d61 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -740,6 +740,7 @@ struct BdrvChildClass {
void (*set_aio_ctx)(BdrvChild *child, AioContext *ctx, GSList **ignore);
};
+extern const BdrvChildClass child_of_bds;
extern const BdrvChildClass child_file;
extern const BdrvChildClass child_format;
extern const BdrvChildClass child_backing;
diff --git a/block.c b/block.c
index f63417c06d..be9bfa9d46 100644
--- a/block.c
+++ b/block.c
@@ -1429,6 +1429,30 @@ static void bdrv_child_cb_detach(BdrvChild *child)
bdrv_unapply_subtree_drain(child, bs);
}
+static int bdrv_child_cb_update_filename(BdrvChild *c, BlockDriverState *base,
+ const char *filename, Error **errp)
+{
+ if (c->role & BDRV_CHILD_COW) {
+ return bdrv_backing_update_filename(c, base, filename, errp);
+ }
+ return 0;
+}
+
+const BdrvChildClass child_of_bds = {
+ .parent_is_bds = true,
+ .get_parent_desc = bdrv_child_get_parent_desc,
+ .inherit_options = bdrv_inherited_options,
+ .drained_begin = bdrv_child_cb_drained_begin,
+ .drained_poll = bdrv_child_cb_drained_poll,
+ .drained_end = bdrv_child_cb_drained_end,
+ .attach = bdrv_child_cb_attach,
+ .detach = bdrv_child_cb_detach,
+ .inactivate = bdrv_child_cb_inactivate,
+ .can_set_aio_ctx = bdrv_child_cb_can_set_aio_ctx,
+ .set_aio_ctx = bdrv_child_cb_set_aio_ctx,
+ .update_filename = bdrv_child_cb_update_filename,
+};
+
static int bdrv_open_flags(BlockDriverState *bs, int flags)
{
int open_flags = flags;
--
2.25.4
- [PULL 17/51] block: Add BdrvChildRole to BdrvChild, (continued)
- [PULL 17/51] block: Add BdrvChildRole to BdrvChild, Kevin Wolf, 2020/05/15
- [PULL 19/51] block: Pass BdrvChildRole to .inherit_options(), Kevin Wolf, 2020/05/15
- [PULL 14/51] block: Add BlockDriver.is_format, Kevin Wolf, 2020/05/15
- [PULL 22/51] block: Add generic bdrv_inherited_options(), Kevin Wolf, 2020/05/15
- [PULL 23/51] block: Use bdrv_inherited_options(), Kevin Wolf, 2020/05/15
- [PULL 20/51] block: Pass parent_is_format to .inherit_options(), Kevin Wolf, 2020/05/15
- [PULL 18/51] block: Pass BdrvChildRole to bdrv_child_perm(), Kevin Wolf, 2020/05/15
- [PULL 25/51] block: Unify bdrv_child_cb_detach(), Kevin Wolf, 2020/05/15
- [PULL 28/51] block: Pull out bdrv_default_perms_for_cow(), Kevin Wolf, 2020/05/15
- [PULL 27/51] block: Distinguish paths in *_format_default_perms, Kevin Wolf, 2020/05/15
- [PULL 26/51] block: Add child_of_bds,
Kevin Wolf <=
- [PULL 29/51] block: Pull out bdrv_default_perms_for_storage(), Kevin Wolf, 2020/05/15
- [PULL 21/51] block: Rename bdrv_inherited_options(), Kevin Wolf, 2020/05/15
- [PULL 24/51] block: Unify bdrv_child_cb_attach(), Kevin Wolf, 2020/05/15
- [PULL 30/51] block: Relax *perms_for_storage for data children, Kevin Wolf, 2020/05/15
- [PULL 31/51] block: Add bdrv_default_perms(), Kevin Wolf, 2020/05/15
- [PULL 32/51] raw-format: Split raw_read_options(), Kevin Wolf, 2020/05/15
- [PULL 34/51] block: Drop child_format, Kevin Wolf, 2020/05/15
- [PULL 33/51] block: Switch child_format users to child_of_bds, Kevin Wolf, 2020/05/15
- [PULL 37/51] block: Make format drivers use child_of_bds, Kevin Wolf, 2020/05/15
- [PULL 35/51] block: Make backing files child_of_bds children, Kevin Wolf, 2020/05/15