migration/multifd: correct multifd_send_thread to trace the flags
authorWei Wang <wei.w.wang@intel.com>
Thu, 9 Mar 2023 10:29:56 +0000 (18:29 +0800)
committerJuan Quintela <quintela@redhat.com>
Thu, 16 Mar 2023 15:07:07 +0000 (16:07 +0100)
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>
migration/multifd.c

index 5e85c3ea9bc4a164ccef33f2394fbb843b9d9287..cbc0dfe39b75e1abaa3f72ec2d5ecdca4e3babcd 100644 (file)
@@ -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;