aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Xu <peterx@redhat.com>2021-12-07 19:50:12 +0800
committerJuan Quintela <quintela@redhat.com>2022-01-28 15:38:23 +0100
commite3fbf760218fe06d0c95bb595774c76206219e2f (patch)
tree39436e92a8122451351ffc4a4c3c90887321f10a
parentdc57d6f2ec3eb9ba6d8a6cac735bf6d02017dda2 (diff)
downloadqemu-e3fbf760218fe06d0c95bb595774c76206219e2f.zip
qemu-e3fbf760218fe06d0c95bb595774c76206219e2f.tar.gz
qemu-e3fbf760218fe06d0c95bb595774c76206219e2f.tar.bz2
migration: Drop postcopy_chunk_hostpages()
This function calls three functions: - postcopy_discard_send_init(ms, block->idstr); - postcopy_chunk_hostpages_pass(ms, block); - postcopy_discard_send_finish(ms); However only the 2nd function call is meaningful. It's major role is to make sure dirty bits are applied in host-page-size granule, so there will be no partial dirty bits set for a whole host page if huge pages are used. The 1st/3rd call are for latter when we want to send the disgard ranges. They're mostly no-op here besides some tracepoints (which are misleading!). Drop them, then we can directly drop postcopy_chunk_hostpages() as a whole because we can call postcopy_chunk_hostpages_pass() directly. There're still some nice comments above postcopy_chunk_hostpages() that explain what it does. Copy it over to the caller's site. Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r--migration/ram.c33
1 files changed, 7 insertions, 26 deletions
diff --git a/migration/ram.c b/migration/ram.c
index c60cf5a..91d3200 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2558,30 +2558,6 @@ static void postcopy_chunk_hostpages_pass(MigrationState *ms, RAMBlock *block)
}
/**
- * postcopy_chunk_hostpages: discard any partially sent host page
- *
- * Utility for the outgoing postcopy code.
- *
- * Discard any partially sent host-page size chunks, mark any partially
- * dirty host-page size chunks as all dirty. In this case the host-page
- * is the host-page for the particular RAMBlock, i.e. it might be a huge page
- *
- * @ms: current migration state
- * @block: block we want to work with
- */
-static void postcopy_chunk_hostpages(MigrationState *ms, RAMBlock *block)
-{
- postcopy_discard_send_init(ms, block->idstr);
-
- /*
- * Ensure that all partially dirty host pages are made fully dirty.
- */
- postcopy_chunk_hostpages_pass(ms, block);
-
- postcopy_discard_send_finish(ms);
-}
-
-/**
* ram_postcopy_send_discard_bitmap: transmit the discard bitmap
*
* Returns zero on success
@@ -2612,8 +2588,13 @@ int ram_postcopy_send_discard_bitmap(MigrationState *ms)
rs->last_page = 0;
RAMBLOCK_FOREACH_NOT_IGNORED(block) {
- /* Deal with TPS != HPS and huge pages */
- postcopy_chunk_hostpages(ms, block);
+ /*
+ * Deal with TPS != HPS and huge pages. It discard any partially sent
+ * host-page size chunks, mark any partially dirty host-page size
+ * chunks as all dirty. In this case the host-page is the host-page
+ * for the particular RAMBlock, i.e. it might be a huge page.
+ */
+ postcopy_chunk_hostpages_pass(ms, block);
}
trace_ram_postcopy_send_discard_bitmap();