[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 18/30] migration/postcopy: count target page number to decide the
From: |
Juan Quintela |
Subject: |
[PULL 18/30] migration/postcopy: count target page number to decide the place_needed |
Date: |
Tue, 14 Jan 2020 13:52:42 +0100 |
From: Wei Yang <address@hidden>
In postcopy, it requires to place whole host page instead of target
page.
Currently, it relies on the page offset to decide whether this is the
last target page. We also can count the target page number during the
iteration. When the number of target page equals
(host page size / target page size), this means it is the last target
page in the host page.
This is a preparation for non-ordered target page transmission.
Signed-off-by: Wei Yang <address@hidden>
Reviewed-by: Dr. David Alan Gilbert <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Signed-off-by: Juan Quintela <address@hidden>
---
migration/ram.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 1cd845b9a7..391fe6e0e4 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -4052,6 +4052,7 @@ static int ram_load_postcopy(QEMUFile *f)
void *postcopy_host_page = mis->postcopy_tmp_page;
void *last_host = NULL;
bool all_zero = false;
+ int target_pages = 0;
while (!ret && !(flags & RAM_SAVE_FLAG_EOS)) {
ram_addr_t addr;
@@ -4086,6 +4087,7 @@ static int ram_load_postcopy(QEMUFile *f)
ret = -EINVAL;
break;
}
+ target_pages++;
matches_target_page_size = block->page_size == TARGET_PAGE_SIZE;
/*
* Postcopy requires that we place whole host pages atomically;
@@ -4117,8 +4119,10 @@ static int ram_load_postcopy(QEMUFile *f)
* If it's the last part of a host page then we place the host
* page
*/
- place_needed = (((uintptr_t)host + TARGET_PAGE_SIZE) &
- (block->page_size - 1)) == 0;
+ if (target_pages == (block->page_size / TARGET_PAGE_SIZE)) {
+ place_needed = true;
+ target_pages = 0;
+ }
place_source = postcopy_host_page;
}
last_host = host;
--
2.24.1
- [PULL 08/30] ram.c: remove unneeded labels, (continued)
- [PULL 08/30] ram.c: remove unneeded labels, Juan Quintela, 2020/01/14
- [PULL 09/30] migration: Rate limit inside host pages, Juan Quintela, 2020/01/14
- [PULL 10/30] migration: Fix incorrect integer->float conversion caught by clang, Juan Quintela, 2020/01/14
- [PULL 11/30] migration: Fix the re-run check of the migrate-incoming command, Juan Quintela, 2020/01/14
- [PULL 12/30] misc: use QEMU_IS_ALIGNED, Juan Quintela, 2020/01/14
- [PULL 13/30] migration: add savevm_state_handler_remove(), Juan Quintela, 2020/01/14
- [PULL 14/30] migration: savevm_state_handler_insert: constant-time element insertion, Juan Quintela, 2020/01/14
- [PULL 15/30] migration/ram: Yield periodically to the main loop, Juan Quintela, 2020/01/14
- [PULL 16/30] migration/postcopy: reduce memset when it is zero page and matches_target_page_size, Juan Quintela, 2020/01/14
- [PULL 17/30] migration/postcopy: wait for decompress thread in precopy, Juan Quintela, 2020/01/14
- [PULL 18/30] migration/postcopy: count target page number to decide the place_needed,
Juan Quintela <=
- [PULL 19/30] migration/postcopy: set all_zero to true on the first target page, Juan Quintela, 2020/01/14
- [PULL 20/30] migration/postcopy: enable random order target page arrival, Juan Quintela, 2020/01/14
- [PULL 21/30] migration/postcopy: enable compress during postcopy, Juan Quintela, 2020/01/14
- [PULL 22/30] migration/multifd: clean pages after filling packet, Juan Quintela, 2020/01/14
- [PULL 23/30] migration/multifd: not use multifd during postcopy, Juan Quintela, 2020/01/14
- [PULL 24/30] migration/multifd: fix nullptr access in terminating multifd threads, Juan Quintela, 2020/01/14
- [PULL 25/30] migration/multifd: fix destroyed mutex access in terminating multifd threads, Juan Quintela, 2020/01/14
- [PULL 26/30] Bug #1829242 correction., Juan Quintela, 2020/01/14
- [PULL 27/30] migration: Define VMSTATE_INSTANCE_ID_ANY, Juan Quintela, 2020/01/14
- [PULL 28/30] migration: Change SaveStateEntry.instance_id into uint32_t, Juan Quintela, 2020/01/14