[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 13/33] block: Add child_of_bds
From: |
Max Reitz |
Subject: |
[PATCH v3 13/33] block: Add child_of_bds |
Date: |
Tue, 18 Feb 2020 13:42:22 +0100 |
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>
Reviewed-by: Eric Blake <address@hidden>
---
block.c | 27 +++++++++++++++++++++++++++
include/block/block_int.h | 1 +
2 files changed, 28 insertions(+)
diff --git a/block.c b/block.c
index 0f24546863..1d33f58ff8 100644
--- a/block.c
+++ b/block.c
@@ -1094,6 +1094,33 @@ static void bdrv_inherited_options(BdrvChildRole role,
bool parent_is_format,
*child_flags = flags;
}
+static int bdrv_backing_update_filename(BdrvChild *c, BlockDriverState *base,
+ const char *filename, Error **errp);
+
+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,
+};
+
/*
* Returns the options and flags that bs->file should get if a protocol driver
* is expected, based on the given options and flags for the parent BDS
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 1f8a818f76..dd7ccea35e 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;
--
2.24.1
- [PATCH v3 04/33] block: Add BdrvChildRole to BdrvChild, (continued)
- [PATCH v3 04/33] block: Add BdrvChildRole to BdrvChild, Max Reitz, 2020/02/18
- [PATCH v3 02/33] block: Rename BdrvChildRole to BdrvChildClass, Max Reitz, 2020/02/18
- [PATCH v3 06/33] block: Pass BdrvChildRole to .inherit_options(), Max Reitz, 2020/02/18
- [PATCH v3 07/33] block: Pass parent_is_format to .inherit_options(), Max Reitz, 2020/02/18
- [PATCH v3 08/33] block: Rename bdrv_inherited_options(), Max Reitz, 2020/02/18
- [PATCH v3 10/33] block: Use bdrv_inherited_options(), Max Reitz, 2020/02/18
- [PATCH v3 09/33] block: Add generic bdrv_inherited_options(), Max Reitz, 2020/02/18
- [PATCH v3 12/33] block: Unify bdrv_child_cb_detach(), Max Reitz, 2020/02/18
- [PATCH v3 11/33] block: Unify bdrv_child_cb_attach(), Max Reitz, 2020/02/18
- [PATCH v3 13/33] block: Add child_of_bds,
Max Reitz <=
- [PATCH v3 14/33] block: Distinguish paths in *_format_default_perms, Max Reitz, 2020/02/18
- [PATCH v3 15/33] block: Pull out bdrv_default_perms_for_backing(), Max Reitz, 2020/02/18
- [PATCH v3 17/33] block: Split bdrv_default_perms_for_storage(), Max Reitz, 2020/02/18
- [PATCH v3 18/33] block: Add bdrv_default_perms(), Max Reitz, 2020/02/18
- [PATCH v3 16/33] block: Pull out bdrv_default_perms_for_storage(), Max Reitz, 2020/02/18
- [PATCH v3 19/33] raw-format: Split raw_read_options(), Max Reitz, 2020/02/18
- [PATCH v3 20/33] block: Switch child_format users to child_of_bds, Max Reitz, 2020/02/18
- [PATCH v3 21/33] block: Drop child_format, Max Reitz, 2020/02/18
- [PATCH v3 22/33] block: Make backing files child_of_bds children, Max Reitz, 2020/02/18