[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 08/58] block: BlockDriver: add .filtered_child_is_backing field
From: |
Kevin Wolf |
Subject: |
[PULL 08/58] block: BlockDriver: add .filtered_child_is_backing field |
Date: |
Thu, 27 Oct 2022 20:30:56 +0200 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Unfortunately not all filters use .file child as filtered child. Two
exclusions are mirror_top and commit_top. Happily they both are private
filters. Bad thing is that this inconsistency is observable through qmp
commands query-block / query-named-block-nodes. So, could we just
change mirror_top and commit_top to use file child as all other filter
driver is an open question. Probably, we could do that with some kind
of deprecation period, but how to warn users during it?
For now, let's just add a field so we can distinguish them in generic
code, it will be used in further commits.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Hanna Reitz <hreitz@redhat.com>
Message-Id: <20220726201134.924743-2-vsementsov@yandex-team.ru>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
include/block/block_int-common.h | 13 +++++++++++++
block/commit.c | 1 +
block/mirror.c | 1 +
3 files changed, 15 insertions(+)
diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h
index d7c0a7e96f..95392052c9 100644
--- a/include/block/block_int-common.h
+++ b/include/block/block_int-common.h
@@ -119,6 +119,19 @@ struct BlockDriver {
* (And this filtered child must then be bs->file or bs->backing.)
*/
bool is_filter;
+ /*
+ * Only make sense for filter drivers, for others must be false.
+ * If true, filtered child is bs->backing. Otherwise it's bs->file.
+ * Only two internal filters use bs->backing as filtered child and has this
+ * field set to true: mirror_top and commit_top.
+ *
+ * Never create any more such filters!
+ *
+ * TODO: imagine how to deprecate this behavior and make all filters work
+ * similarly using bs->file as filtered child.
+ */
+ bool filtered_child_is_backing;
+
/*
* Set to true if the BlockDriver is a format driver. Format nodes
* generally do not expect their children to be other format nodes
diff --git a/block/commit.c b/block/commit.c
index 38571510cb..e210e86bac 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -238,6 +238,7 @@ static BlockDriver bdrv_commit_top = {
.bdrv_child_perm = bdrv_commit_top_child_perm,
.is_filter = true,
+ .filtered_child_is_backing = true,
};
void commit_start(const char *job_id, BlockDriverState *bs,
diff --git a/block/mirror.c b/block/mirror.c
index 80c0109d39..f9432af3df 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -1587,6 +1587,7 @@ static BlockDriver bdrv_mirror_top = {
.bdrv_child_perm = bdrv_mirror_top_child_perm,
.is_filter = true,
+ .filtered_child_is_backing = true,
};
static BlockJob *mirror_start_job(
--
2.37.3
- [PULL 00/58] Block layer patches, Kevin Wolf, 2022/10/27
- [PULL 01/58] MAINTAINERS: Fold "Block QAPI, monitor, ..." into "Block layer core", Kevin Wolf, 2022/10/27
- [PULL 03/58] block: Refactor get_tmp_filename(), Kevin Wolf, 2022/10/27
- [PULL 02/58] block: Ignore close() failure in get_tmp_filename(), Kevin Wolf, 2022/10/27
- [PULL 07/58] vhost-user-blk: fix the resize crash, Kevin Wolf, 2022/10/27
- [PULL 05/58] vvfat: allow spaces in file names, Kevin Wolf, 2022/10/27
- [PULL 08/58] block: BlockDriver: add .filtered_child_is_backing field,
Kevin Wolf <=
- [PULL 04/58] vvfat: allow some writes to bootsector, Kevin Wolf, 2022/10/27
- [PULL 13/58] test-bdrv-graph-mod: fix filters to be filters, Kevin Wolf, 2022/10/27
- [PULL 10/58] block/blklogwrites: don't care to remove bs->file child on failure, Kevin Wolf, 2022/10/27
- [PULL 12/58] tests-bdrv-drain: bdrv_replace_test driver: declare supports_backing, Kevin Wolf, 2022/10/27
- [PULL 11/58] test-bdrv-graph-mod: update test_parallel_perm_update test case, Kevin Wolf, 2022/10/27
- [PULL 09/58] block: introduce bdrv_open_file_child() helper, Kevin Wolf, 2022/10/27
- [PULL 14/58] block: document connection between child roles and bs->backing/bs->file, Kevin Wolf, 2022/10/27
- [PULL 18/58] Revert "block: Restructure remove_file_or_backing_child()", Kevin Wolf, 2022/10/27
- [PULL 16/58] Revert "block: Let replace_child_noperm free children", Kevin Wolf, 2022/10/27
- [PULL 17/58] Revert "block: Let replace_child_tran keep indirect pointer", Kevin Wolf, 2022/10/27