On 03/13/2018 02:29 PM, Vladimir Sementsov-Ogievskiy wrote:
> 13.03.2018 21:22, Dr. David Alan Gilbert wrote:
>> * Vladimir Sementsov-Ogievskiy (vsement...@virtuozzo.com) wrote:
>>> Postcopy migration of dirty bitmaps. Only named dirty bitmaps are
>>> migrated.
>>>
>>> If destination qemu is already containing a dirty bitmap with the
>>> same name
>>> as a migrated bitmap (for the same node), then, if their
>>> granularities are
>>> the same the migration will be done, otherwise the error will be
>>> generated.
>>>
>>> If destination qemu doesn't contain such bitmap it will be created.
>>>
>>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com>
>>> ---
> 
> [...]
> 
>>> +
>>> +static int dirty_bitmap_load_bits(QEMUFile *f, DirtyBitmapLoadState *s)
>>> +{
>>> +    uint64_t first_byte = qemu_get_be64(f) << BDRV_SECTOR_BITS;
>>> +    uint64_t nr_bytes = (uint64_t)qemu_get_be32(f) << BDRV_SECTOR_BITS;
>>> +    trace_dirty_bitmap_load_bits_enter(first_byte >> BDRV_SECTOR_BITS,
>>> +                                       nr_bytes >> BDRV_SECTOR_BITS);
>>> +
>>> +    if (s->flags & DIRTY_BITMAP_MIG_FLAG_ZEROES) {
>>> +        trace_dirty_bitmap_load_bits_zeroes();
>>> +        bdrv_dirty_bitmap_deserialize_zeroes(s->bitmap, first_byte,
>>> nr_bytes,
>>> +                                             false);
>>> +    } else {
>>> +        size_t ret;
>>> +        uint8_t *buf;
>>> +        uint64_t buf_size = qemu_get_be64(f);
>>> +        uint64_t needed_size =
>>> +            bdrv_dirty_bitmap_serialization_size(s->bitmap,
>>> +                                                 first_byte, nr_bytes);
>>> +
>>> +        if (needed_size > buf_size ||
>>> +            buf_size > QEMU_ALIGN_UP(needed_size, 4 + sizeof(long))
>> I think you meant '4 * sizeof(long)';  other than that, from the
>> migration side I'm OK, so with that fixed, and someone from the block
>> side checking the block code:
>>
>>
>> Reviewed-by: Dr. David Alan Gilbert <dgilb...@redhat.com>
>>
> 
> Ohh, yes, 4 * sizeof(long).
> Who will finally pull it? Should I respin, or you fix it inflight?
> 

I'm testing and staging it right now. David gave his blessing for me to
send a Pull Request.

--js

Reply via email to