提交 789fc4ae 编写于 作者: D Daniel P. Berrange

Fix reporting of errors for p2p migration

Starting/ending jobs when closing the connection may reset any
error which was reported earlier in p2p migration. We must
save the original error before doing so. This means we can also
just call virConnectClose as normal, instead of virUnrefConnect

* src/qemu/qemu_migration.c: Preserve errors in p2p migration
上级 e06c8ede
......@@ -2141,6 +2141,8 @@ static int doPeer2PeerMigrate(struct qemud_driver *driver,
int ret = -1;
virConnectPtr dconn = NULL;
bool p2p;
virErrorPtr orig_err = NULL;
VIR_DEBUG("driver=%p, sconn=%p, vm=%p, xmlin=%s, dconnuri=%s, "
"uri=%s, flags=%lx, dname=%s, resource=%lu",
driver, sconn, vm, NULLSTR(xmlin), NULLSTR(dconnuri),
......@@ -2191,10 +2193,14 @@ static int doPeer2PeerMigrate(struct qemud_driver *driver,
dconnuri, flags, dname, resource);
cleanup:
/* don't call virConnectClose(), because that resets any pending errors */
orig_err = virSaveLastError();
qemuDomainObjEnterRemoteWithDriver(driver, vm);
virUnrefConnect(dconn);
virConnectClose(dconn);
qemuDomainObjExitRemoteWithDriver(driver, vm);
if (orig_err) {
virSetError(orig_err);
virFreeError(orig_err);
}
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册