提交 40cd0290 编写于 作者: J Jiri Denemark

qemu: Make qemuMigrationCancelDriveMirror usable without async job

We don't have an async job when reconnecting to existing domains after
libvirtd restart.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 3a0f39bc
...@@ -1871,7 +1871,8 @@ static int ...@@ -1871,7 +1871,8 @@ static int
qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver, qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainDiskDefPtr disk, virDomainDiskDefPtr disk,
bool failNoJob) bool failNoJob,
qemuDomainAsyncJob asyncJob)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
char *diskAlias = NULL; char *diskAlias = NULL;
...@@ -1899,8 +1900,7 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver, ...@@ -1899,8 +1900,7 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver,
QEMU_DRIVE_HOST_PREFIX, disk->info.alias) < 0) QEMU_DRIVE_HOST_PREFIX, disk->info.alias) < 0)
return -1; return -1;
if (qemuDomainObjEnterMonitorAsync(driver, vm, if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
goto cleanup; goto cleanup;
rv = qemuMonitorBlockJobCancel(priv->mon, diskAlias, true); rv = qemuMonitorBlockJobCancel(priv->mon, diskAlias, true);
...@@ -1931,7 +1931,8 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver, ...@@ -1931,7 +1931,8 @@ qemuMigrationCancelOneDriveMirror(virQEMUDriverPtr driver,
static int static int
qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver, qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
bool check) bool check,
qemuDomainAsyncJob asyncJob)
{ {
virErrorPtr err = NULL; virErrorPtr err = NULL;
int ret = -1; int ret = -1;
...@@ -1948,7 +1949,8 @@ qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver, ...@@ -1948,7 +1949,8 @@ qemuMigrationCancelDriveMirror(virQEMUDriverPtr driver,
if (!diskPriv->migrating) if (!diskPriv->migrating)
continue; continue;
rv = qemuMigrationCancelOneDriveMirror(driver, vm, disk, check); rv = qemuMigrationCancelOneDriveMirror(driver, vm, disk,
check, asyncJob);
if (rv != 0) { if (rv != 0) {
if (rv < 0) { if (rv < 0) {
if (!err) if (!err)
...@@ -3687,7 +3689,8 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver, ...@@ -3687,7 +3689,8 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver,
virErrorPtr orig_err = virSaveLastError(); virErrorPtr orig_err = virSaveLastError();
/* cancel any outstanding NBD jobs */ /* cancel any outstanding NBD jobs */
qemuMigrationCancelDriveMirror(driver, vm, false); qemuMigrationCancelDriveMirror(driver, vm, false,
QEMU_ASYNC_JOB_MIGRATION_OUT);
virSetError(orig_err); virSetError(orig_err);
virFreeError(orig_err); virFreeError(orig_err);
...@@ -4265,7 +4268,8 @@ qemuMigrationRun(virQEMUDriverPtr driver, ...@@ -4265,7 +4268,8 @@ qemuMigrationRun(virQEMUDriverPtr driver,
/* cancel any outstanding NBD jobs */ /* cancel any outstanding NBD jobs */
if (mig && mig->nbd) { if (mig && mig->nbd) {
if (qemuMigrationCancelDriveMirror(driver, vm, ret == 0) < 0) if (qemuMigrationCancelDriveMirror(driver, vm, ret == 0,
QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
ret = -1; ret = -1;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册