aboutsummaryrefslogtreecommitdiff
path: root/migration/multifd.c
diff options
context:
space:
mode:
authorWei Wang <wei.w.wang@intel.com>2023-03-09 18:29:56 +0800
committerJuan Quintela <quintela@redhat.com>2023-03-16 16:07:07 +0100
commitff1585d1d8ae5b15d88327e59859d352829caebb (patch)
tree50c9aaf1458dd5ca37f2896d41739110b4ccf6a0 /migration/multifd.c
parentbf0274192a6c1aac67ca6ee6a96b5f295cfc8d0a (diff)
downloadqemu-ff1585d1d8ae5b15d88327e59859d352829caebb.zip
qemu-ff1585d1d8ae5b15d88327e59859d352829caebb.tar.gz
qemu-ff1585d1d8ae5b15d88327e59859d352829caebb.tar.bz2
migration/multifd: correct multifd_send_thread to trace the flags
The p->flags could be updated via the send_prepare callback, e.g. OR-ed with MULTIFD_FLAG_ZLIB via zlib_send_prepare. Assign p->flags to the local "flags" before the send_prepare callback could only get partial of p->flags. Fix it by moving the assignment of p->flags to the local flags after the callback, so that the correct flags can be traced. Fixes: ab7cbb0b9a3b ("multifd: Make no compression operations into its own structure") Signed-off-by: Wei Wang <wei.w.wang@intel.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration/multifd.c')
-rw-r--r--migration/multifd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/migration/multifd.c b/migration/multifd.c
index 5e85c3e..cbc0dfe 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -677,7 +677,7 @@ static void *multifd_send_thread(void *opaque)
if (p->pending_job) {
uint64_t packet_num = p->packet_num;
- uint32_t flags = p->flags;
+ uint32_t flags;
p->normal_num = 0;
if (use_zero_copy_send) {
@@ -699,6 +699,7 @@ static void *multifd_send_thread(void *opaque)
}
}
multifd_send_fill_packet(p);
+ flags = p->flags;
p->flags = 0;
p->num_packets++;
p->total_normal_pages += p->normal_num;