[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH 1/3] multifd: bugfix for migration using compression methods
From: |
Liu, Yuan1 |
Subject: |
RE: [PATCH 1/3] multifd: bugfix for migration using compression methods |
Date: |
Thu, 19 Dec 2024 08:42:49 +0000 |
> -----Original Message-----
> From: Peter Xu <peterx@redhat.com>
> Sent: Thursday, December 19, 2024 1:03 AM
> To: Liu, Yuan1 <yuan1.liu@intel.com>
> Cc: farosas@suse.de; qemu-devel@nongnu.org; Zeng, Jason
> <jason.zeng@intel.com>; Wang, Yichen <yichen.wang@bytedance.com>
> Subject: Re: [PATCH 1/3] multifd: bugfix for migration using compression
> methods
>
> 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.")
Yes, this patch is used to fix the tag containing 303e6f54f9, and I see it
already exists in v9.0.0 and later versions.
By the way, The three bugfix patches are based on mainline and the commit id is
8032c78e55 (origin/staging, origin/master, origin/HEAD) Merge tag
'firmware-20241216-pull-request' of https://gitlab.com/kraxel/qemu into staging
> > ---
> > 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