On Wed 25 Apr 2018 04:03:22 PM CEST, Max Reitz wrote:
>>> But the question stands whether we need simple node replacement when
>>> we want bdrv_reopen() anyway.  In addition, we don't need just
>>> replacement, we also need addition and removal (e.g. for backing
>>> files or quorum children) -- and especially in the case of quorum,
>>> that is going to be a pain (mostly naming the children).
>>>
>>> With bdrv_reopen(), we can just require the user to respecify all
>>> children, so we don't run into the issue of how to name things at
>>> least.
>> 
>> So in this example, if you want to replace [B] with [E] you would
>> reopen [C] specifying the new backing file?
>> 
>>    [A] <- [B] <- [C] <- [D]
>> 
>>           [E]
>
> You can just use child node name references like in blockdev-add.

Were the (more or less) exact requirements of QMP blockdev-reopen
discussed? How is it different from qemu-io's "reopen" command? What are
the options that you can and can not change?

Also, you could replace an element in the backing chain using reopen,
but can you replace a node that is not a backing image of another one?

With QMP blockdev-replace you could use the existing blockdev-add
command and create an arbitrary tree and then simply do blockdev-replace
so I suppose that for some use cases at least it would be pretty
straightforward.

Berto

Reply via email to