Message ID | 20230309102956.8030-1-wei.w.wang@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v1] migration/multifd: correct multifd_send_thread to trace the flags | expand |
Wei Wang <wei.w.wang@intel.com> wrote: > 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> Good catch. Thanks. queued.
diff --git a/migration/multifd.c b/migration/multifd.c index 5e85c3ea9b..cbc0dfe39b 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;
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> --- migration/multifd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)