diff mbox series

[02/14] ram.c: Dont change param->block in the compress thread

Message ID ba18bf4e6e143a83b588c26b83136168c8657a33.1680457764.git.lukasstraub2@web.de (mailing list archive)
State New, archived
Headers show
Series migration/ram.c: Refactor compress code | expand

Commit Message

Lukas Straub April 2, 2023, 5:56 p.m. UTC
Instead introduce a extra parameter to trigger the compress thread.
Now, when the compress thread is done, we know what RAMBlock and
offset it did compress.

This will be used in the next commits to move save_page_header()
out of compress code.

Signed-off-by: Lukas Straub <lukasstraub2@web.de>
---
 migration/ram.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--
2.30.2
diff mbox series

Patch

diff --git a/migration/ram.c b/migration/ram.c
index ca561e62bd..3c9fac086d 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -503,6 +503,7 @@  typedef enum CompressResult CompressResult;
 struct CompressParam {
     bool done;
     bool quit;
+    bool trigger;
     CompressResult result;
     QEMUFile *file;
     QemuMutex mutex;
@@ -576,10 +577,10 @@  static void *do_data_compress(void *opaque)

     qemu_mutex_lock(&param->mutex);
     while (!param->quit) {
-        if (param->block) {
+        if (param->trigger) {
             block = param->block;
             offset = param->offset;
-            param->block = NULL;
+            param->trigger = false;
             qemu_mutex_unlock(&param->mutex);

             result = do_compress_ram_page(param->file, &param->stream,
@@ -1556,6 +1557,7 @@  static inline void set_compress_params(CompressParam *param, RAMBlock *block,
 {
     param->block = block;
     param->offset = offset;
+    param->trigger = true;
 }

 static int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset)