[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 13/21] migration/block-dirty-bitmap: simplify dirty_bitmap_loa
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v3 13/21] migration/block-dirty-bitmap: simplify dirty_bitmap_load_complete |
Date: |
Fri, 24 Jul 2020 11:43:19 +0300 |
bdrv_enable_dirty_bitmap_locked() call does nothing, as if we are in
postcopy, bitmap successor must be enabled, and reclaim operation will
enable the bitmap.
So, actually we need just call _reclaim_ in both if branches, and
making differences only to add an assertion seems not really good. The
logic becomes simple: on load complete we do reclaim and that's all.
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
---
migration/block-dirty-bitmap.c | 25 ++++---------------------
1 file changed, 4 insertions(+), 21 deletions(-)
diff --git a/migration/block-dirty-bitmap.c b/migration/block-dirty-bitmap.c
index 9194807b54..405a259296 100644
--- a/migration/block-dirty-bitmap.c
+++ b/migration/block-dirty-bitmap.c
@@ -603,6 +603,10 @@ static void dirty_bitmap_load_complete(QEMUFile *f,
DBMLoadState *s)
qemu_mutex_lock(&s->lock);
+ if (bdrv_dirty_bitmap_has_successor(s->bitmap)) {
+ bdrv_reclaim_dirty_bitmap(s->bitmap, &error_abort);
+ }
+
for (item = s->enabled_bitmaps; item; item = g_slist_next(item)) {
LoadBitmapState *b = item->data;
@@ -612,27 +616,6 @@ static void dirty_bitmap_load_complete(QEMUFile *f,
DBMLoadState *s)
}
}
- if (bdrv_dirty_bitmap_has_successor(s->bitmap)) {
- bdrv_dirty_bitmap_lock(s->bitmap);
- if (s->enabled_bitmaps == NULL) {
- /* in postcopy */
- bdrv_reclaim_dirty_bitmap_locked(s->bitmap, &error_abort);
- bdrv_enable_dirty_bitmap_locked(s->bitmap);
- } else {
- /* target not started, successor must be empty */
- int64_t count = bdrv_get_dirty_count(s->bitmap);
- BdrvDirtyBitmap *ret = bdrv_reclaim_dirty_bitmap_locked(s->bitmap,
- NULL);
- /* bdrv_reclaim_dirty_bitmap can fail only on no successor (it
- * must be) or on merge fail, but merge can't fail when second
- * bitmap is empty
- */
- assert(ret == s->bitmap &&
- count == bdrv_get_dirty_count(s->bitmap));
- }
- bdrv_dirty_bitmap_unlock(s->bitmap);
- }
-
qemu_mutex_unlock(&s->lock);
}
--
2.21.0
- Re: [PATCH v3 07/21] migration/block-dirty-bitmap: fix dirty_bitmap_mig_before_vm_start, (continued)
- [PATCH v3 08/21] migration/block-dirty-bitmap: rename state structure types, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 09/21] migration/block-dirty-bitmap: rename dirty_bitmap_mig_cleanup, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 10/21] migration/block-dirty-bitmap: move mutex init to dirty_bitmap_mig_init, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 18/21] qemu-iotests/199: prepare for new test-cases addition, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 19/21] qemu-iotests/199: check persistent bitmaps, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 11/21] migration/block-dirty-bitmap: refactor state global variables, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 20/21] qemu-iotests/199: add early shutdown case to bitmaps postcopy, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 13/21] migration/block-dirty-bitmap: simplify dirty_bitmap_load_complete,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v3 12/21] migration/block-dirty-bitmap: rename finish_lock to just lock, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 14/21] migration/block-dirty-bitmap: keep bitmap state for all bitmaps, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 21/21] qemu-iotests/199: add source-killed case to bitmaps postcopy, Vladimir Sementsov-Ogievskiy, 2020/07/24
- [PATCH v3 15/21] migration/block-dirty-bitmap: relax error handling in incoming part, Vladimir Sementsov-Ogievskiy, 2020/07/24
- Re: [PATCH v3 15/21] migration/block-dirty-bitmap: relax error handling in incoming part, Dr. David Alan Gilbert, 2020/07/27