aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Straub <lukasstraub2@web.de>2023-04-20 11:47:59 +0200
committerJuan Quintela <quintela@redhat.com>2023-05-08 15:25:26 +0200
commit10c2f7b747bebfbf67b2219330269dcd5721f3d9 (patch)
tree45ac7ed5fd6d2f91603b3af30406c31518c2e92a
parent97274a871fc4155635414bfd343b5df599ecba76 (diff)
downloadqemu-10c2f7b747bebfbf67b2219330269dcd5721f3d9.zip
qemu-10c2f7b747bebfbf67b2219330269dcd5721f3d9.tar.gz
qemu-10c2f7b747bebfbf67b2219330269dcd5721f3d9.tar.bz2
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 <lukasstraub2@web.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r--migration/ram.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/migration/ram.c b/migration/ram.c
index 7bc05fc..b552a9e 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(&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,
@@ -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)