[Top][All Lists]

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

Re: [Qemu-block] [PATCH v11 11/13] migration: add postcopy migration of

From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-block] [PATCH v11 11/13] migration: add postcopy migration of dirty bitmaps
Date: Tue, 13 Mar 2018 21:29:36 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

13.03.2018 21:22, Dr. David Alan Gilbert wrote:
* Vladimir Sementsov-Ogievskiy (address@hidden) 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 <address@hidden>


+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 <address@hidden>

Ohh, yes, 4 * sizeof(long).
Who will finally pull it? Should I respin, or you fix it inflight?

Best regards,

reply via email to

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