Re: [PATCH 09/18] migration: Make compress_data_with_multithreads return bool

2023-06-22 Thread Lukas Straub
On Tue, 13 Jun 2023 16:57:48 +0200
Juan Quintela  wrote:

> Signed-off-by: Juan Quintela 

Nit:
Probably makes sense to rename it to try_compress_page or similar.

And probably for zero_page and xbzrle (when factored out in it's own
function) too.

> ---
>  migration/ram-compress.h |  4 ++--
>  migration/ram-compress.c | 17 ++---
>  migration/ram.c  |  2 +-
>  3 files changed, 13 insertions(+), 10 deletions(-)
> 
> diff --git a/migration/ram-compress.h b/migration/ram-compress.h
> index e55d3b50bd..b228640092 100644
> --- a/migration/ram-compress.h
> +++ b/migration/ram-compress.h
> @@ -60,8 +60,8 @@ void compress_threads_save_cleanup(void);
>  int compress_threads_save_setup(void);
>  
>  void flush_compressed_data(int (send_queued_data(CompressParam *)));
> -int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
> -int (send_queued_data(CompressParam *)));
> +bool compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
> +  int (send_queued_data(CompressParam 
> *)));
>  
>  int wait_for_decompress_done(void);
>  void compress_threads_load_cleanup(void);
> diff --git a/migration/ram-compress.c b/migration/ram-compress.c
> index 47b600d62b..8ce9519f3d 100644
> --- a/migration/ram-compress.c
> +++ b/migration/ram-compress.c
> @@ -262,10 +262,13 @@ static inline void set_compress_params(CompressParam 
> *param, RAMBlock *block,
>  param->trigger = true;
>  }
>  
> -int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
> -int (send_queued_data(CompressParam *)))
> +/*
> + * Return true when it compress a page
> + */
> +bool compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
> + int (send_queued_data(CompressParam *)))
>  {
> -int idx, thread_count, pages = -1;
> +int idx, thread_count;
>  bool wait = migrate_compress_wait_thread();
>  
>  thread_count = migrate_compress_threads();
> @@ -283,8 +286,8 @@ retry:
>  
>  qemu_cond_signal(>cond);
>  qemu_mutex_unlock(>mutex);
> -pages = 1;
> -break;
> +qemu_mutex_unlock(_done_lock);
> +return true;
>  }
>  }
>  
> @@ -292,13 +295,13 @@ retry:
>   * wait for the free thread if the user specifies 'compress-wait-thread',
>   * otherwise we will post the page out in the main thread as normal page.
>   */
> -if (pages < 0 && wait) {
> +if (wait) {
>  qemu_cond_wait(_done_cond, _done_lock);
>  goto retry;
>  }
>  qemu_mutex_unlock(_done_lock);
>  
> -return pages;
> +return false;
>  }
>  
>  /* return the size after decompression, or negative value on error */
> diff --git a/migration/ram.c b/migration/ram.c
> index 53dec4d305..2a3ff2c36e 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -2034,7 +2034,7 @@ static bool save_compress_page(RAMState *rs, 
> PageSearchStatus *pss,
>  return false;
>  }
>  
> -if (compress_page_with_multi_thread(block, offset, send_queued_data) > 
> 0) {
> +if (compress_page_with_multi_thread(block, offset, send_queued_data)) {
>  return true;
>  }
>  



pgpS8MmMBtnrD.pgp
Description: OpenPGP digital signature


[PATCH 09/18] migration: Make compress_data_with_multithreads return bool

2023-06-13 Thread Juan Quintela
Signed-off-by: Juan Quintela 
---
 migration/ram-compress.h |  4 ++--
 migration/ram-compress.c | 17 ++---
 migration/ram.c  |  2 +-
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/migration/ram-compress.h b/migration/ram-compress.h
index e55d3b50bd..b228640092 100644
--- a/migration/ram-compress.h
+++ b/migration/ram-compress.h
@@ -60,8 +60,8 @@ void compress_threads_save_cleanup(void);
 int compress_threads_save_setup(void);
 
 void flush_compressed_data(int (send_queued_data(CompressParam *)));
-int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
-int (send_queued_data(CompressParam *)));
+bool compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
+  int (send_queued_data(CompressParam *)));
 
 int wait_for_decompress_done(void);
 void compress_threads_load_cleanup(void);
diff --git a/migration/ram-compress.c b/migration/ram-compress.c
index 47b600d62b..8ce9519f3d 100644
--- a/migration/ram-compress.c
+++ b/migration/ram-compress.c
@@ -262,10 +262,13 @@ static inline void set_compress_params(CompressParam 
*param, RAMBlock *block,
 param->trigger = true;
 }
 
-int compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
-int (send_queued_data(CompressParam *)))
+/*
+ * Return true when it compress a page
+ */
+bool compress_page_with_multi_thread(RAMBlock *block, ram_addr_t offset,
+ int (send_queued_data(CompressParam *)))
 {
-int idx, thread_count, pages = -1;
+int idx, thread_count;
 bool wait = migrate_compress_wait_thread();
 
 thread_count = migrate_compress_threads();
@@ -283,8 +286,8 @@ retry:
 
 qemu_cond_signal(>cond);
 qemu_mutex_unlock(>mutex);
-pages = 1;
-break;
+qemu_mutex_unlock(_done_lock);
+return true;
 }
 }
 
@@ -292,13 +295,13 @@ retry:
  * wait for the free thread if the user specifies 'compress-wait-thread',
  * otherwise we will post the page out in the main thread as normal page.
  */
-if (pages < 0 && wait) {
+if (wait) {
 qemu_cond_wait(_done_cond, _done_lock);
 goto retry;
 }
 qemu_mutex_unlock(_done_lock);
 
-return pages;
+return false;
 }
 
 /* return the size after decompression, or negative value on error */
diff --git a/migration/ram.c b/migration/ram.c
index 53dec4d305..2a3ff2c36e 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2034,7 +2034,7 @@ static bool save_compress_page(RAMState *rs, 
PageSearchStatus *pss,
 return false;
 }
 
-if (compress_page_with_multi_thread(block, offset, send_queued_data) > 0) {
+if (compress_page_with_multi_thread(block, offset, send_queued_data)) {
 return true;
 }
 
-- 
2.40.1