Message ID | 20241218091413.140396-4-yuan1.liu@intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | bugfixes for migration using compression methods | expand |
On Wed, Dec 18, 2024 at 05:14:13PM +0800, Yuan Liu wrote: > When QPL compression is enabled on the migration channel and the same > dirty page changes from a normal page to a zero page in the iterative > memory copy, the dirty page will not be updated to a zero page again > on the target side, resulting in incorrect memory data on the source > and target sides. > > The root cause is that the target side does not record the normal pages > to the receivedmap. > > The solution is to add ramblock_recv_bitmap_set_offset in target side > to record the normal pages. > > Signed-off-by: Yuan Liu <yuan1.liu@intel.com> > Reviewed-by: Jason Zeng <jason.zeng@intel.com> Reviewed-by: Peter Xu <peterx@redhat.com>
diff --git a/migration/multifd-qatzip.c b/migration/multifd-qatzip.c index 7b68397625..6a0e989fae 100644 --- a/migration/multifd-qatzip.c +++ b/migration/multifd-qatzip.c @@ -373,6 +373,7 @@ static int qatzip_recv(MultiFDRecvParams *p, Error **errp) /* Copy each page to its appropriate location. */ for (int i = 0; i < p->normal_num; i++) { memcpy(p->host + p->normal[i], q->out_buf + page_size * i, page_size); + ramblock_recv_bitmap_set_offset(p->block, p->normal[i]); } return 0; }