migration/rdma: Don't use imaginary transfers
authorJuan Quintela <quintela@redhat.com>
Mon, 15 May 2023 19:57:06 +0000 (21:57 +0200)
committerJuan Quintela <quintela@redhat.com>
Fri, 29 Sep 2023 16:11:21 +0000 (18:11 +0200)
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>

migration/qemu-file.c
migration/ram.c

index 19c33c998588b1b88cbe08d60ddf6052b5368dc2..e53ff2dd863ace72adf595d419b1c08f11ef45e8 100644 (file)
@@ -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;
     }
 
index f2c5b07919332deee059ebaf220261534fc164ba..c6238f7a8b3ea1fbbcbc85f84d7579a1e71756a1 100644 (file)
@@ -1197,7 +1197,6 @@ static bool control_save_page(PageSearchStatus *pss, RAMBlock *block,
     }
 
     if (bytes_xmit) {
-        ram_transferred_add(bytes_xmit);
         *pages = 1;
     }