[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 24/41] block: Add BdrvChildRole.stay_at_node
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [RFC PATCH 24/41] block: Add BdrvChildRole.stay_at_node |
Date: |
Mon, 13 Feb 2017 18:22:46 +0100 |
When the parents' child links are updated in bdrv_append() or
bdrv_replace_in_backing_chain(), this should affect all child links of
BlockBackends or other nodes, but not on child links held for other
purposes (like for setting permissions). This patch allows to control
the behaviour per BdrvChildRole.
Signed-off-by: Kevin Wolf <address@hidden>
---
block.c | 3 +++
include/block/block_int.h | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/block.c b/block.c
index d743f50..842ac78 100644
--- a/block.c
+++ b/block.c
@@ -2713,6 +2713,9 @@ static void change_parent_backing_link(BlockDriverState
*from,
BdrvChild *c, *next, *to_c;
QLIST_FOREACH_SAFE(c, &from->parents, next_parent, next) {
+ if (c->role->stay_at_node) {
+ continue;
+ }
if (c->role == &child_backing) {
/* @from is generally not allowed to be a backing file, except for
* when @to is the overlay. In that case, @from may not be replaced
diff --git a/include/block/block_int.h b/include/block/block_int.h
index a5557b1..b24fc49 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -427,6 +427,10 @@ typedef struct BdrvAioNotifier {
} BdrvAioNotifier;
struct BdrvChildRole {
+ /* If true, bdrv_replace_in_backing_chain() doesn't change the node this
+ * BdrvChild points to. */
+ bool stay_at_node;
+
void (*inherit_options)(int *child_flags, QDict *child_options,
int parent_flags, QDict *parent_options);
--
1.8.3.1
- [Qemu-devel] [RFC PATCH 19/41] hw/block: Request permissions, (continued)
- [Qemu-devel] [RFC PATCH 24/41] block: Add BdrvChildRole.stay_at_node,
Kevin Wolf <=
- [Qemu-devel] [RFC PATCH 25/41] blockjob: Add permissions to block_job_add_bdrv(), Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 23/41] block: Include details on permission errors in message, Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 27/41] block: Add bdrv_new_open_driver(), Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 31/41] block: Fix pending requests check in bdrv_append(), Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 33/41] block: Allow backing file links in change_parent_backing_link(), Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 30/41] backup: Use real permissions in backup block job, Kevin Wolf, 2017/02/13
- [Qemu-devel] [RFC PATCH 32/41] block: BdrvChildRole.attach/detach() callbacks, Kevin Wolf, 2017/02/13