qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bitmap migration bug with -drive while block mirror runs


From: Vladimir Sementsov-Ogievskiy
Subject: Re: bitmap migration bug with -drive while block mirror runs
Date: Tue, 1 Oct 2019 16:17:02 +0000

01.10.2019 19:16, Kevin Wolf wrote:
> Am 01.10.2019 um 17:57 hat Vladimir Sementsov-Ogievskiy geschrieben:
>> 01.10.2019 17:10, John Snow wrote:
>>>
>>>
>>> On 10/1/19 10:00 AM, Vladimir Sementsov-Ogievskiy wrote:
>>>>> Otherwise: I have a lot of cloudy ideas on how to solve this, but
>>>>> ultimately what we want is to be able to find the "addressable" name for
>>>>> the node the bitmap is attached to, which would be the name of the first
>>>>> ancestor node that isn't a filter. (OR, the name of the block-backend
>>>>> above that node.)
>>>> Not the name of ancestor node, it will break mapping: it must be name of 
>>>> the
>>>> node itself or name of parent (may be through several filters) 
>>>> block-backend
>>>>
>>>
>>> Ah, you are right of course -- because block-backends are the only
>>> "nodes" for which we actually descend the graph and add the bitmap to
>>> its child.
>>>
>>> So the real back-resolution mechanism is:
>>>
>>> - Find the first non-filter ancestor, A
>>> - if A is not a block-backend, we must use our node-local name.
>>> - if A's name is empty, we must use our node-local name.
>>> - If the name we have chosen is not id_wellformed, we have no
>>> migration-stable addressable name for this bitmap and the migration must
>>> fail!
>>>
>>>
>>> For resolving bitmap addresses via QMP (node, name) pairs; the
>>> resolution method would be this:
>>>
>>> - if the node-name N is a block-backend, descend the tree until we find
>>> the first non-filter node V.
>>> - if the node-name N is a BlockDriverState, use this node directly.
>>>
>>
>> Looks good for me.
>>
>> I also think if on destination we have both block-backend with name N and
>> block-node with name N and the latter is not (filtered) child of the former,
>> we should fail migration of at least that bitmap. (Hope, nobody reuse
>> block-backend names as node-names in practice.. (should we restrict it
>> explicitly ?))
> 
> You can't have a node and a BlockBackend of the same name, they share a
> single namespace. If you try to do so, you get an error.
> 


Oh, thanks, that's cool.


-- 
Best regards,
Vladimir

reply via email to

[Prev in Thread] Current Thread [Next in Thread]