summaryrefslogtreecommitdiff
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)
downloadqemu-12c67ffb1fe34ff72a55fa440243c0dfcf22f89b.tar.gz
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;