[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RESEND 5/7] migration/ram: Move xbzrle zero page handling into sa
|
From: |
Fabiano Rosas |
|
Subject: |
[PATCH RESEND 5/7] migration/ram: Move xbzrle zero page handling into save_zero_page |
|
Date: |
Wed, 11 Oct 2023 15:46:02 -0300 |
It makes a bit more sense to have the zero page handling of xbzrle
right where we save the zero page.
Also invert the exit condition to remove one level of indentation
which makes the next patch easier to grasp.
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
migration/ram.c | 35 ++++++++++++++++++++---------------
1 file changed, 20 insertions(+), 15 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index c8474f6fd8..1177563523 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1167,21 +1167,34 @@ 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);
- if (len) {
- stat64_add(&mig_stats.zero_pages, 1);
- ram_transferred_add(len);
- return 1;
+ if (!len) {
+ return -1;
}
- return -1;
+
+ 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;
}
/*
@@ -2137,16 +2150,8 @@ static int ram_save_target_page_legacy(RAMState *rs,
PageSearchStatus *pss)
return 1;
}
- res = save_zero_page(pss, block, offset);
+ res = save_zero_page(rs, 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;
}
--
2.35.3
- [PATCH RESEND 0/7] migration pending patches, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 3/7] migration/ram: Remove RAMState from xbzrle_cache_zero_page, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 4/7] migration/ram: Stop passing QEMUFile around in save_zero_page, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 1/7] tests/qtest: migration-test: Add tests for file-based migration, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 6/7] migration/ram: Merge save_zero_page functions, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 5/7] migration/ram: Move xbzrle zero page handling into save_zero_page,
Fabiano Rosas <=
- [PATCH RESEND 7/7] tests/qtest: Re-enable multifd cancel test, Fabiano Rosas, 2023/10/11
- [PATCH RESEND 2/7] migration/ram: Refactor precopy ram loading code, Fabiano Rosas, 2023/10/11