[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/3] multifd: bugfix for migration using compression methods
From: |
Peter Xu |
Subject: |
Re: [PATCH 1/3] multifd: bugfix for migration using compression methods |
Date: |
Wed, 18 Dec 2024 12:03:14 -0500 |
On Wed, Dec 18, 2024 at 05:14:11PM +0800, Yuan Liu wrote:
> When compression is enabled on the migration channel and
> the pages processed are all zero pages, these pages will
> not be sent and updated on the target side, resulting in
> incorrect memory data on the source and target sides.
>
> The root cause is that all compression methods call
> multifd_send_prepare_common to determine whether to compress
> dirty pages, but multifd_send_prepare_common does not update
> the IOV of MultiFDPacket_t when all dirty pages are zero pages.
>
> The solution is to always update the IOV of MultiFDPacket_t
> regardless of whether the dirty pages are all zero pages.
>
> Signed-off-by: Yuan Liu <yuan1.liu@intel.com>
> Reviewed-by: Jason Zeng <jason.zeng@intel.com>
Ouch.. thanks for digging this out.
Reviewed-by: Peter Xu <peterx@redhat.com>
Is this the correct Fixes tag (and copy stable for 9.0+)?
Fixes: 303e6f54f9 ("migration/multifd: Implement zero page transmission on the
multifd thread.")
> ---
> migration/multifd-nocomp.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/migration/multifd-nocomp.c b/migration/multifd-nocomp.c
> index 55191152f9..2e4aaac285 100644
> --- a/migration/multifd-nocomp.c
> +++ b/migration/multifd-nocomp.c
> @@ -362,6 +362,7 @@ int multifd_ram_flush_and_sync(void)
> bool multifd_send_prepare_common(MultiFDSendParams *p)
> {
> MultiFDPages_t *pages = &p->data->u.ram;
> + multifd_send_prepare_header(p);
> multifd_send_zero_page_detect(p);
>
> if (!pages->normal_num) {
> @@ -369,8 +370,6 @@ bool multifd_send_prepare_common(MultiFDSendParams *p)
> return false;
> }
>
> - multifd_send_prepare_header(p);
> -
> return true;
> }
>
> --
> 2.43.0
>
--
Peter Xu