RDMA protocol is completely asynchronous, so in qemu_rdma_save_page() they "invent" that a byte has been transferred. And then they call qemu_file_credit_transfer() and ram_transferred_add() with that byte. Just remove that calls as nothing has been sent.
Signed-off-by: Juan Quintela <quint...@redhat.com> --- migration/qemu-file.c | 5 +---- migration/ram.c | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/migration/qemu-file.c b/migration/qemu-file.c index 0086d67d83..951f046c39 100644 --- a/migration/qemu-file.c +++ b/migration/qemu-file.c @@ -346,13 +346,10 @@ size_t ram_control_save_page(QEMUFile *f, ram_addr_t block_offset, if (ret != RAM_SAVE_CONTROL_DELAYED && ret != RAM_SAVE_CONTROL_NOT_SUPP) { - if (bytes_sent && *bytes_sent > 0) { - qemu_file_credit_transfer(f, *bytes_sent); - } else if (ret < 0) { + if (ret < 0) { qemu_file_set_error(f, ret); } } - return ret; } diff --git a/migration/ram.c b/migration/ram.c index 558f2ed3b1..f889e39a20 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1349,7 +1349,6 @@ static bool control_save_page(PageSearchStatus *pss, RAMBlock *block, } if (bytes_xmit) { - ram_transferred_add(bytes_xmit); *pages = 1; } -- 2.40.0