aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2023-05-15 21:57:06 +0200
committerJuan Quintela <quintela@redhat.com>2023-09-29 18:11:21 +0200
commit2ebe5d4d5aa4d11f02a2d52fa398a52a6a0dc2ee (patch)
tree26702147da6227adaa12ef35761c8faaafca5649
parente33780351ceb8317dccec143e722ae8434d58c34 (diff)
migration/rdma: Don't use imaginary transfers
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. Reviewed-by: Leonardo Bras <leobras@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-Id: <20230515195709.63843-14-quintela@redhat.com>
-rw-r--r--migration/qemu-file.c5
-rw-r--r--migration/ram.c1
2 files changed, 1 insertions, 5 deletions
diff --git a/migration/qemu-file.c b/migration/qemu-file.c
index 19c33c9985..e53ff2dd86 100644
--- a/migration/qemu-file.c
+++ b/migration/qemu-file.c
@@ -332,13 +332,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 f2c5b07919..c6238f7a8b 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1197,7 +1197,6 @@ static bool control_save_page(PageSearchStatus *pss, RAMBlock *block,
}
if (bytes_xmit) {
- ram_transferred_add(bytes_xmit);
*pages = 1;
}