[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken()
From: |
David Hildenbrand |
Subject: |
[PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken() |
Date: |
Wed, 6 May 2020 11:49:38 +0200 |
RDMA will pin all guest memory (as documented in docs/rdma.txt). We want
to mark RAM block discards to be broken - however, to keep it simple
use ram_block_discard_is_required() instead of inhibiting.
Cc: "Michael S. Tsirkin" <address@hidden>
Cc: Juan Quintela <address@hidden>
Cc: "Dr. David Alan Gilbert" <address@hidden>
Signed-off-by: David Hildenbrand <address@hidden>
---
migration/rdma.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/migration/rdma.c b/migration/rdma.c
index f61587891b..029adbb950 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -29,6 +29,7 @@
#include "qemu/sockets.h"
#include "qemu/bitmap.h"
#include "qemu/coroutine.h"
+#include "exec/memory.h"
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
@@ -4017,8 +4018,14 @@ void rdma_start_incoming_migration(const char
*host_port, Error **errp)
Error *local_err = NULL;
trace_rdma_start_incoming_migration();
- rdma = qemu_rdma_data_init(host_port, &local_err);
+ /* Avoid ram_block_discard_set_broken(), cannot change during migration. */
+ if (ram_block_discard_is_required()) {
+ error_setg(errp, "RDMA: cannot set discarding of RAM broken");
+ return;
+ }
+
+ rdma = qemu_rdma_data_init(host_port, &local_err);
if (rdma == NULL) {
goto err;
}
@@ -4064,10 +4071,17 @@ void rdma_start_outgoing_migration(void *opaque,
const char *host_port, Error **errp)
{
MigrationState *s = opaque;
- RDMAContext *rdma = qemu_rdma_data_init(host_port, errp);
RDMAContext *rdma_return_path = NULL;
+ RDMAContext *rdma;
int ret = 0;
+ /* Avoid ram_block_discard_set_broken(), cannot change during migration. */
+ if (ram_block_discard_is_required()) {
+ error_setg(errp, "RDMA: cannot set discarding of RAM broken");
+ return;
+ }
+
+ rdma = qemu_rdma_data_init(host_port, errp);
if (rdma == NULL) {
goto err;
}
--
2.25.3
- [PATCH v1 03/17] accel/kvm: Convert to ram_block_discard_set_broken(), (continued)
- [PATCH v1 03/17] accel/kvm: Convert to ram_block_discard_set_broken(), David Hildenbrand, 2020/05/06
- [PATCH v1 04/17] s390x/pv: Convert to ram_block_discard_set_broken(), David Hildenbrand, 2020/05/06
- [PATCH v1 02/17] vfio: Convert to ram_block_discard_set_broken(), David Hildenbrand, 2020/05/06
- [PATCH v1 05/17] virtio-balloon: Rip out qemu_balloon_inhibit(), David Hildenbrand, 2020/05/06
- [PATCH v1 06/17] target/i386: sev: Use ram_block_discard_set_broken(), David Hildenbrand, 2020/05/06
- [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(),
David Hildenbrand <=
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), Dr. David Alan Gilbert, 2020/05/15
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), David Hildenbrand, 2020/05/15
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), Dr. David Alan Gilbert, 2020/05/15
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), David Hildenbrand, 2020/05/15
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), Dr. David Alan Gilbert, 2020/05/15
- Re: [PATCH v1 07/17] migration/rdma: Use ram_block_discard_set_broken(), David Hildenbrand, 2020/05/18
[PATCH v1 08/17] migration/colo: Use ram_block_discard_set_broken(), David Hildenbrand, 2020/05/06
[PATCH v1 09/17] linux-headers: update to contain virtio-mem, David Hildenbrand, 2020/05/06