[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 07/15] migration: fix incorrect bitmap size calculati
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PULL 07/15] migration: fix incorrect bitmap size calculation |
Date: |
Tue, 10 Jul 2018 16:30:08 +0100 |
From: Peter Xu <address@hidden>
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>
Message-Id: <address@hidden>
Signed-off-by: Dr. David Alan Gilbert <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] [PULL 00/15] migration queue, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 03/15] migration: unbreak postcopy recovery, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 01/15] migration: delay postcopy paused state, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 04/15] migration: unify incoming processing, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 02/15] migration: move income process out of multifd, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 05/15] migration: simplify check to use qemu file buffer, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 06/15] migration: loosen recovery check when load vm, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 07/15] migration: fix incorrect bitmap size calculation,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PULL 08/15] migration: show pause/recover state on dst host, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 09/15] tests: introduce migrate_postcopy_* helpers, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 11/15] tests: introduce migrate_query*() helpers, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 12/15] tests: introduce wait_for_migration_status(), Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 10/15] tests: allow migrate() to take extra flags, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 13/15] tests: add postcopy recovery test, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 14/15] tests: hide stderr for postcopy recovery test, Dr. David Alan Gilbert (git), 2018/07/10
- [Qemu-devel] [PULL 15/15] migration: reorder MIG_CMD_POSTCOPY_RESUME, Dr. David Alan Gilbert (git), 2018/07/10
- Re: [Qemu-devel] [PULL 00/15] migration queue, Peter Maydell, 2018/07/10