qemu: Set migration FD blocking

Since we switched from direct host migration scheme to the one,
where we connect to the destination and then just pass a FD to a
qemu, we have uncovered a qemu bug. Qemu expects migration FD to
block. However, we are passing a nonblocking one which results in
cryptic error messages like:

  qemu: warning: error while loading state section id 2
  load of migration failed

The bug is already known to Qemu folks, but we should workaround
already released Qemus. Patch has been originally proposed by Stefan
Hajnoczi <stefanha@gmail.com>
(cherry picked from commit ceb31795af)
This commit is contained in:
Michal Privoznik 2013-03-26 15:45:16 +01:00 committed by Cole Robinson
parent 2c7638fdb4
commit 2bcf1522ff

View File

@ -1811,6 +1811,13 @@ qemuMigrationConnect(struct qemud_driver *driver,
spec->dest.fd.qemu == -1) spec->dest.fd.qemu == -1)
goto cleanup; goto cleanup;
/* Migration expects a blocking FD */
if (virSetBlocking(spec->dest.fd.qemu, true) < 0) {
virReportSystemError(errno, _("Unable to set FD %d blocking"),
spec->dest.fd.qemu);
goto cleanup;
}
ret = 0; ret = 0;
cleanup: cleanup: