From 7ab0eb0d01090c9e1576f26f3cb307a84758a71e Mon Sep 17 00:00:00 2001 From: Lukas Straub Date: Thu, 20 Apr 2023 11:47:59 +0200 Subject: [PATCH] ram.c: Dont change param->block in the compress thread 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 Reviewed-by: Juan Quintela Signed-off-by: Juan Quintela --- migration/ram.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index 2b213b923b0da..ebcde3dcd40b4 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -492,6 +492,7 @@ typedef enum CompressResult CompressResult; struct CompressParam { bool done; bool quit; + bool trigger; CompressResult result; QEMUFile *file; QemuMutex mutex; @@ -565,10 +566,10 @@ static void *do_data_compress(void *opaque) qemu_mutex_lock(¶m->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(¶m->mutex); result = do_compress_ram_page(param->file, ¶m->stream, @@ -1545,6 +1546,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)