summary refs log tree commit diff stats
path: root/migration/rdma.c
diff options
context:
space:
mode:
authorDr. David Alan Gilbert <dgilbert@redhat.com>2016-09-23 20:14:02 +0100
committerJuan Quintela <quintela@trasno.org>2016-10-13 17:22:38 +0200
commit12c67ffb1fe34ff72a55fa440243c0dfcf22f89b (patch)
treed06b68975686067c3b5972c3a859526eff6fef64 /migration/rdma.c
parent49228e17edc3f9a7cef6061daffdcc3a33d8023d (diff)
downloadfocaccia-qemu-12c67ffb1fe34ff72a55fa440243c0dfcf22f89b.tar.gz
focaccia-qemu-12c67ffb1fe34ff72a55fa440243c0dfcf22f89b.zip
migration/rdma: Pass qemu_file errors across link
If we fail for some reason (e.g. a mismatched RAMBlock)
and it's set the qemu_file error flag, pass that error back to the
peer so it can clean up rather than waiting for some higher level
progress.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Michael R. Hines <michael@hinespot.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Diffstat (limited to 'migration/rdma.c')
-rw-r--r--migration/rdma.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/migration/rdma.c b/migration/rdma.c
index 88bdb64457..7271292db0 100644
--- a/migration/rdma.c
+++ b/migration/rdma.c
@@ -2804,6 +2804,9 @@ static int qio_channel_rdma_close(QIOChannel *ioc,
     QIOChannelRDMA *rioc = QIO_CHANNEL_RDMA(ioc);
     trace_qemu_rdma_close();
     if (rioc->rdma) {
+        if (!rioc->rdma->error_state) {
+            rioc->rdma->error_state = qemu_file_get_error(rioc->file);
+        }
         qemu_rdma_cleanup(rioc->rdma);
         g_free(rioc->rdma);
         rioc->rdma = NULL;