This small series fixes two independent issues in the RDMA migration code path that were noticed while reviewing the QIOChannelRDMA behavior and migration statistics during RDMA live migration.
Patch 1 makes QIOChannelRDMA's readv honor the blocking flag set via io_set_blocking(). Previously, in blocking mode it returned immediately when the receive buffer could not satisfy the request, diverging from other QIOChannel implementations. The fix loops on qemu_rdma_exchange_recv() while the channel is in blocking mode, and removes the now-stale XXX comments about unimplemented blocking support. Patch 2 fixes transfer accounting for the RDMA zero page compression path. When a zero page is detected, an RDMA_CONTROL_COMPRESS message is sent instead of an RDMA Write, but mig_stats.rdma_bytes and ram_transferred_add() were never updated, so migration progress and bandwidth were undercounted. The patch accounts the wire cost (RDMAControlHeader + RDMACompress payload), matching how the non-RDMA path accounts for zero page markers. Both patches are small and self-contained; no behavior change is expected outside the RDMA migration path. Bin Guo (2): migration/rdma: honor blocking mode in QIOChannelRDMA readv migration/rdma: account transferred bytes for zero page compression migration/rdma.c | 62 ++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 33 deletions(-) -- 2.50.1 (Apple Git-155)
