[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-3.0 v2 03/10] migration: fix incorrect bitmap si
From: |
Peter Xu |
Subject: |
[Qemu-devel] [PATCH for-3.0 v2 03/10] migration: fix incorrect bitmap size calculation |
Date: |
Tue, 10 Jul 2018 17:18:55 +0800 |
The calculation on size of received bitmap is incorrect for postcopy
recovery. Here we wanted to let the size to cover all the valid bits in
the bitmap, we should use DIV_ROUND_UP() instead of a division.
For example, a RAMBlock with size=4K (which contains only one single 4K
page) will have nbits=1, then nbits/8=0, then the real bitmap won't be
sent to source at all.
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Peter Xu <address@hidden>
---
migration/ram.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 49068e86d3..52dd678092 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -235,7 +235,7 @@ int64_t ramblock_recv_bitmap_send(QEMUFile *file,
bitmap_to_le(le_bitmap, block->receivedmap, nbits);
/* Size of the bitmap, in bytes */
- size = nbits / 8;
+ size = DIV_ROUND_UP(nbits, 8);
/*
* size is always aligned to 8 bytes for 64bit machines, but it
@@ -3944,7 +3944,7 @@ int ram_dirty_bitmap_reload(MigrationState *s, RAMBlock
*block)
int ret = -EINVAL;
QEMUFile *file = s->rp_state.from_dst_file;
unsigned long *le_bitmap, nbits = block->used_length >> TARGET_PAGE_BITS;
- uint64_t local_size = nbits / 8;
+ uint64_t local_size = DIV_ROUND_UP(nbits, 8);
uint64_t size, end_mark;
trace_ram_dirty_bitmap_reload_begin(block->idstr);
--
2.17.1
- [Qemu-devel] [PATCH for-3.0 v2 00/10] migration: postcopy recovery unit test, bug fixes, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 01/10] migration: simplify check to use qemu file buffer, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 02/10] migration: loosen recovery check when load vm, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 03/10] migration: fix incorrect bitmap size calculation,
Peter Xu <=
- [Qemu-devel] [PATCH for-3.0 v2 04/10] migration: show pause/recover state on dst host, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 05/10] tests: introduce migrate_postcopy_* helpers, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 06/10] tests: allow migrate() to take extra flags, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 07/10] tests: introduce migrate_query*() helpers, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 08/10] tests: introduce wait_for_migration_status(), Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 09/10] tests: add postcopy recovery test, Peter Xu, 2018/07/10
- [Qemu-devel] [PATCH for-3.0 v2 10/10] tests: hide stderr for postcopy recovery test, Peter Xu, 2018/07/10