|
From: | Max Reitz |
Subject: | Re: [PATCH 04/21] qdev: allow setting drive property for realized device |
Date: | Tue, 18 May 2021 11:09:19 +0200 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 17.05.21 20:09, Vladimir Sementsov-Ogievskiy wrote:
17.05.2021 18:48, Max Reitz wrote:On 17.05.21 08:44, Vladimir Sementsov-Ogievskiy wrote:We need an ability to insert filters above top block node, attached to block device. It can't be achieved with blockdev-reopen command. So, we want do it with help of qom-set. Intended usage: 1. blockdev-add, creating the filter, which child is at top node A, attached to some guest block device.Is a “not” missing here, i.e. “not attached to any guest block device”? I would have thought one would create a filtered tree that is not in use by any frontend, so that the filter need not take any permissions.node A is attached. So, we have [blk] --root-> [A} And want to insert a filter between blk and A. We do 1. [filter] --file--\ v [blk] --root--> [A]
Oh, so you mean node A is attached to a guest device. The sentence sounded to me like the newly created filter tree were attached to it.
Yes, that’s how I expected it to be. I just find the sentence not quite clear, because I found it ambiguous which node the “attached to some guest block device” refers to.
Perhaps: “Intended usage: Assume there is a node A that is attached to some guest device. 1. blockdev-add to create a filter node B that has A as its child.2. qom-set to change the node attached to the guest device’s BlockBackend from A to B.”
?
2. [blk] --root--> [filer] --file--> [A]2. qom-set, to change bs attached to root blk from original node to newly create filter. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> --- hw/core/qdev-properties-system.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-)Looks good, just one question: (well, two, one was above)diff --git a/hw/core/qdev-properties-system.c b/hw/core/qdev-properties-system.cindex 2760c21f11..7d97562654 100644 --- a/hw/core/qdev-properties-system.c +++ b/hw/core/qdev-properties-system.c[...]@@ -196,6 +209,7 @@ static void release_drive(Object *obj, const char *name, void *opaque)const PropertyInfo qdev_prop_drive = { .name = "str",.description = "Node name or ID of a block device to use as a backend",+ .realized_set_allowed = true, .get = get_drive, .set = set_drive, .release = release_drive,Why not for qdev_prop_drive_iothread?Hmm, the only reason is that I missed that part of architecture around here, I'm new to qdev code. Will add with next version
OK. (I just saw it because it was right below this structure, too, it isn’t like I actually know what I’m saying.)
Max
[Prev in Thread] | Current Thread | [Next in Thread] |