[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/5] migration/ram: Move xbzrle zero page handling into save_zero
From: |
Fabiano Rosas |
Subject: |
[PATCH 3/5] migration/ram: Move xbzrle zero page handling into save_zero_page |
Date: |
Tue, 15 Aug 2023 11:38:26 -0300 |
It makes a bit more sense to have the zero page handling of xbzrle
right where we save the zero page.
This also makes save_zero_page() follow the same format as
save_compress_page() at the top level of
ram_save_target_page_legacy().
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/ram.c | 27 +++++++++++++++------------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 761f43dc34..a10410a1a5 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1159,11 +1159,12 @@ static int save_zero_page_to_file(PageSearchStatus
*pss, RAMBlock *block,
*
* Returns the number of pages written.
*
+ * @rs: current RAM state
* @pss: current PSS channel
* @block: block that contains the page we want to send
* @offset: offset inside the block for the page
*/
-static int save_zero_page(PageSearchStatus *pss, RAMBlock *block,
+static int save_zero_page(RAMState *rs, PageSearchStatus *pss, RAMBlock *block,
ram_addr_t offset)
{
int len = save_zero_page_to_file(pss, block, offset);
@@ -1171,6 +1172,17 @@ static int save_zero_page(PageSearchStatus *pss,
RAMBlock *block,
if (len) {
stat64_add(&mig_stats.zero_pages, 1);
ram_transferred_add(len);
+
+ /*
+ * Must let xbzrle know, otherwise a previous (now 0'd) cached
+ * page would be stale.
+ */
+ if (rs->xbzrle_started) {
+ XBZRLE_cache_lock();
+ xbzrle_cache_zero_page(block->offset + offset);
+ XBZRLE_cache_unlock();
+ }
+
return 1;
}
return -1;
@@ -2141,17 +2153,8 @@ static int ram_save_target_page_legacy(RAMState *rs,
PageSearchStatus *pss)
return 1;
}
- res = save_zero_page(pss, block, offset);
- if (res > 0) {
- /* Must let xbzrle know, otherwise a previous (now 0'd) cached
- * page would be stale
- */
- if (rs->xbzrle_started) {
- XBZRLE_cache_lock();
- xbzrle_cache_zero_page(block->offset + offset);
- XBZRLE_cache_unlock();
- }
- return res;
+ if (save_zero_page(rs, pss, block, offset)) {
+ return 1;
}
/*
--
2.35.3