提交 7c62f239 编写于 作者: P Peter Krempa

qemu: blockPivot: Don't pause the VM any more since we don't use drive-reopen

Support for drive-reopen was never present in the upstream code so we
don't need to pause the VM when doing the block pivot. Kill all the
code related to this semi-upstream artifact.
上级 db37f3cc
...@@ -16037,14 +16037,14 @@ qemuDiskPathToAlias(virDomainObjPtr vm, const char *path, int *idxret) ...@@ -16037,14 +16037,14 @@ qemuDiskPathToAlias(virDomainObjPtr vm, const char *path, int *idxret)
* abort with pivot; this updates the VM definition as appropriate, on * abort with pivot; this updates the VM definition as appropriate, on
* either success or failure. */ * either success or failure. */
static int static int
qemuDomainBlockPivot(virConnectPtr conn, qemuDomainBlockPivot(virQEMUDriverPtr driver,
virQEMUDriverPtr driver, virDomainObjPtr vm, virDomainObjPtr vm,
const char *device, virDomainDiskDefPtr disk) const char *device,
virDomainDiskDefPtr disk)
{ {
int ret = -1, rc; int ret = -1, rc;
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
virDomainBlockJobInfo info; virDomainBlockJobInfo info;
bool resume = false;
virStorageSourcePtr oldsrc = NULL; virStorageSourcePtr oldsrc = NULL;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
...@@ -16075,29 +16075,6 @@ qemuDomainBlockPivot(virConnectPtr conn, ...@@ -16075,29 +16075,6 @@ qemuDomainBlockPivot(virConnectPtr conn,
goto cleanup; goto cleanup;
} }
/* If we are using the older 'drive-reopen', we want to make sure
* that management apps can tell whether the command succeeded,
* even if libvirtd is restarted at the wrong time. To accomplish
* that, we pause the guest before drive-reopen, and resume it
* only when we know the outcome; if libvirtd restarts, then
* management will see the guest still paused, and know that no
* guest I/O has caused the source and mirror to diverge. XXX
* With the newer 'block-job-complete', we need to use a
* persistent bitmap to make things safe; so for now, we just
* blindly pause the guest. */
if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) {
if (qemuProcessStopCPUs(driver, vm, VIR_DOMAIN_PAUSED_SAVE,
QEMU_ASYNC_JOB_NONE) < 0)
goto cleanup;
resume = true;
if (!virDomainObjIsActive(vm)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("guest unexpectedly quit"));
goto cleanup;
}
}
/* For active commit, the mirror is part of the already labeled /* For active commit, the mirror is part of the already labeled
* chain. For blockcopy, we previously labeled only the top-level * chain. For blockcopy, we previously labeled only the top-level
* image; but if the user is reusing an external image that * image; but if the user is reusing an external image that
...@@ -16171,21 +16148,6 @@ qemuDomainBlockPivot(virConnectPtr conn, ...@@ -16171,21 +16148,6 @@ qemuDomainBlockPivot(virConnectPtr conn,
if (oldsrc) if (oldsrc)
disk->src = oldsrc; disk->src = oldsrc;
if (resume && virDomainObjIsActive(vm) &&
qemuProcessStartCPUs(driver, vm, conn,
VIR_DOMAIN_RUNNING_UNPAUSED,
QEMU_ASYNC_JOB_NONE) < 0) {
virObjectEventPtr event = NULL;
event = virDomainEventLifecycleNewFromObj(vm,
VIR_DOMAIN_EVENT_SUSPENDED,
VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
if (event)
qemuDomainEventQueue(driver, event);
if (virGetLastError() == NULL) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("resuming after drive-reopen failed"));
}
}
virObjectUnref(cfg); virObjectUnref(cfg);
return ret; return ret;
} }
...@@ -16289,7 +16251,7 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm, ...@@ -16289,7 +16251,7 @@ qemuDomainBlockJobImpl(virDomainObjPtr vm,
} }
if (disk->mirror && (flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT)) { if (disk->mirror && (flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT)) {
ret = qemuDomainBlockPivot(conn, driver, vm, device, disk); ret = qemuDomainBlockPivot(driver, vm, device, disk);
if (ret < 0 && async) if (ret < 0 && async)
goto endjob; goto endjob;
goto waitjob; goto waitjob;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册