Skip to content

Commit

Permalink
ram.c: Dont change param->block in the compress thread
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Lukey3332 authored and Juan Quintela committed Apr 28, 2023
1 parent 280304a commit 7ab0eb0
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions migration/ram.c
Expand Up @@ -492,6 +492,7 @@ typedef enum CompressResult CompressResult;
struct CompressParam {
bool done;
bool quit;
bool trigger;
CompressResult result;
QEMUFile *file;
QemuMutex mutex;
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 7ab0eb0

Please sign in to comment.