提交 8bad8e7b 编写于 作者: P Peter Krempa

qemu: migration: Rename NBD migration functions

Drop the mention of 'drive mirror' from the function names and mention
NBD. This will help when adding the 'blockdev mirror' migration code
which will allow using TLS.

Additionally fix some of the function comments to make more sense
Signed-off-by: NPeter Krempa <pkrempa@redhat.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 99223c8c
...@@ -463,20 +463,19 @@ qemuMigrationDstStopNBDServer(virQEMUDriverPtr driver, ...@@ -463,20 +463,19 @@ qemuMigrationDstStopNBDServer(virQEMUDriverPtr driver,
/** /**
* qemuMigrationSrcDriveMirrorReady: * qemuMigrationSrcNBDStorageCopyReady:
* @vm: domain * @vm: domain
* *
* Check the status of all drive-mirrors started by * Check the status of all drives copied via qemuMigrationSrcNBDStorageCopy.
* qemuMigrationSrcDriveMirror. Any pending block job events * Any pending block job events for the mirrored disks will be processed.
* for the mirrored disks will be processed.
* *
* Returns 1 if all mirrors are "ready", * Returns 1 if all mirrors are "ready",
* 0 if some mirrors are still performing initial sync, * 0 if some mirrors are still performing initial sync,
* -1 on error. * -1 on error.
*/ */
static int static int
qemuMigrationSrcDriveMirrorReady(virDomainObjPtr vm, qemuMigrationSrcNBDStorageCopyReady(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob) qemuDomainAsyncJob asyncJob)
{ {
size_t i; size_t i;
size_t notReady = 0; size_t notReady = 0;
...@@ -530,9 +529,9 @@ qemuMigrationSrcDriveMirrorReady(virDomainObjPtr vm, ...@@ -530,9 +529,9 @@ qemuMigrationSrcDriveMirrorReady(virDomainObjPtr vm,
* -2 all mirrors are gone but some of them failed. * -2 all mirrors are gone but some of them failed.
*/ */
static int static int
qemuMigrationDriveMirrorCancelled(virDomainObjPtr vm, qemuMigrationSrcNBDCopyCancelled(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
bool check) bool check)
{ {
size_t i; size_t i;
size_t active = 0; size_t active = 0;
...@@ -617,11 +616,11 @@ qemuMigrationDriveMirrorCancelled(virDomainObjPtr vm, ...@@ -617,11 +616,11 @@ qemuMigrationDriveMirrorCancelled(virDomainObjPtr vm,
* -1 on error or when job failed and failNoJob is true. * -1 on error or when job failed and failNoJob is true.
*/ */
static int static int
qemuMigrationSrcCancelOneDriveMirror(virQEMUDriverPtr driver, qemuMigrationSrcNBDCopyCancelOne(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
virDomainDiskDefPtr disk, virDomainDiskDefPtr disk,
bool failNoJob, bool failNoJob,
qemuDomainAsyncJob asyncJob) qemuDomainAsyncJob asyncJob)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
char *diskAlias = NULL; char *diskAlias = NULL;
...@@ -672,23 +671,22 @@ qemuMigrationSrcCancelOneDriveMirror(virQEMUDriverPtr driver, ...@@ -672,23 +671,22 @@ qemuMigrationSrcCancelOneDriveMirror(virQEMUDriverPtr driver,
/** /**
* qemuMigrationSrcCancelDriveMirror: * qemuMigrationSrcNBDCopyCancel:
* @driver: qemu driver * @driver: qemu driver
* @vm: domain * @vm: domain
* @check: if true report an error when some of the mirrors fails * @check: if true report an error when some of the mirrors fails
* *
* Cancel all drive-mirrors started by qemuMigrationDriveMirror. * Cancel all drive-mirrors started by qemuMigrationSrcNBDStorageCopy.
* Any pending block job events for the affected disks will be * Any pending block job events for the affected disks will be processed.
* processed.
* *
* Returns 0 on success, -1 otherwise. * Returns 0 on success, -1 otherwise.
*/ */
static int static int
qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, qemuMigrationSrcNBDCopyCancel(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
bool check, bool check,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
virConnectPtr dconn) virConnectPtr dconn)
{ {
virErrorPtr err = NULL; virErrorPtr err = NULL;
int ret = -1; int ret = -1;
...@@ -705,8 +703,8 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, ...@@ -705,8 +703,8 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver,
if (!diskPriv->migrating) if (!diskPriv->migrating)
continue; continue;
rv = qemuMigrationSrcCancelOneDriveMirror(driver, vm, disk, rv = qemuMigrationSrcNBDCopyCancelOne(driver, vm, disk,
check, asyncJob); check, asyncJob);
if (rv != 0) { if (rv != 0) {
if (rv < 0) { if (rv < 0) {
if (!err) if (!err)
...@@ -718,8 +716,7 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, ...@@ -718,8 +716,7 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver,
} }
} }
while ((rv = qemuMigrationDriveMirrorCancelled(vm, asyncJob, while ((rv = qemuMigrationSrcNBDCopyCancelled(vm, asyncJob, check)) != 1) {
check)) != 1) {
if (check && !failed && if (check && !failed &&
dconn && virConnectIsAlive(dconn) <= 0) { dconn && virConnectIsAlive(dconn) <= 0) {
virReportError(VIR_ERR_OPERATION_FAILED, "%s", virReportError(VIR_ERR_OPERATION_FAILED, "%s",
...@@ -752,7 +749,7 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, ...@@ -752,7 +749,7 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver,
/** /**
* qemuMigrationDriveMirror: * qemuMigrationSrcNBDStorageCopy:
* @driver: qemu driver * @driver: qemu driver
* @vm: domain * @vm: domain
* @mig: migration cookie * @mig: migration cookie
...@@ -760,27 +757,26 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver, ...@@ -760,27 +757,26 @@ qemuMigrationSrcCancelDriveMirror(virQEMUDriverPtr driver,
* @speed: bandwidth limit in MiB/s * @speed: bandwidth limit in MiB/s
* @migrate_flags: migrate monitor command flags * @migrate_flags: migrate monitor command flags
* *
* Run drive-mirror to feed NBD server running on dst and wait * Migrate non-shared storage using the NBD protocol to the server running
* till the process switches into another phase where writes go * inside the qemu process on dst and wait until the copy converges.
* simultaneously to both source and destination. On success, * On success update @migrate_flags so we don't tell 'migrate' command
* update @migrate_flags so we don't tell 'migrate' command
* to do the very same operation. On failure, the caller is * to do the very same operation. On failure, the caller is
* expected to call qemuMigrationSrcCancelDriveMirror to stop all * expected to call qemuMigrationSrcNBDCopyCancel to stop all
* running mirrors. * running copy operations.
* *
* Returns 0 on success (@migrate_flags updated), * Returns 0 on success (@migrate_flags updated),
* -1 otherwise. * -1 otherwise.
*/ */
static int static int
qemuMigrationSrcDriveMirror(virQEMUDriverPtr driver, qemuMigrationSrcNBDStorageCopy(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
qemuMigrationCookiePtr mig, qemuMigrationCookiePtr mig,
const char *host, const char *host,
unsigned long speed, unsigned long speed,
unsigned int *migrate_flags, unsigned int *migrate_flags,
size_t nmigrate_disks, size_t nmigrate_disks,
const char **migrate_disks, const char **migrate_disks,
virConnectPtr dconn) virConnectPtr dconn)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
int ret = -1; int ret = -1;
...@@ -857,8 +853,7 @@ qemuMigrationSrcDriveMirror(virQEMUDriverPtr driver, ...@@ -857,8 +853,7 @@ qemuMigrationSrcDriveMirror(virQEMUDriverPtr driver,
} }
} }
while ((rv = qemuMigrationSrcDriveMirrorReady(vm, while ((rv = qemuMigrationSrcNBDStorageCopyReady(vm, QEMU_ASYNC_JOB_MIGRATION_OUT)) != 1) {
QEMU_ASYNC_JOB_MIGRATION_OUT)) != 1) {
if (rv < 0) if (rv < 0)
goto cleanup; goto cleanup;
...@@ -1364,7 +1359,7 @@ qemuMigrationAnyCompleted(virQEMUDriverPtr driver, ...@@ -1364,7 +1359,7 @@ qemuMigrationAnyCompleted(virQEMUDriverPtr driver,
/* This flag should only be set when run on src host */ /* This flag should only be set when run on src host */
if (flags & QEMU_MIGRATION_COMPLETED_CHECK_STORAGE && if (flags & QEMU_MIGRATION_COMPLETED_CHECK_STORAGE &&
qemuMigrationSrcDriveMirrorReady(vm, asyncJob) < 0) qemuMigrationSrcNBDStorageCopyReady(vm, asyncJob) < 0)
goto error; goto error;
if (flags & QEMU_MIGRATION_COMPLETED_ABORT_ON_ERROR && if (flags & QEMU_MIGRATION_COMPLETED_ABORT_ON_ERROR &&
...@@ -2852,8 +2847,8 @@ qemuMigrationSrcConfirmPhase(virQEMUDriverPtr driver, ...@@ -2852,8 +2847,8 @@ qemuMigrationSrcConfirmPhase(virQEMUDriverPtr driver,
int reason; int reason;
/* cancel any outstanding NBD jobs */ /* cancel any outstanding NBD jobs */
qemuMigrationSrcCancelDriveMirror(driver, vm, false, qemuMigrationSrcNBDCopyCancel(driver, vm, false,
QEMU_ASYNC_JOB_MIGRATION_OUT, NULL); QEMU_ASYNC_JOB_MIGRATION_OUT, NULL);
virSetError(orig_err); virSetError(orig_err);
virFreeError(orig_err); virFreeError(orig_err);
...@@ -3357,13 +3352,13 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, ...@@ -3357,13 +3352,13 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver,
} }
/* This will update migrate_flags on success */ /* This will update migrate_flags on success */
if (qemuMigrationSrcDriveMirror(driver, vm, mig, if (qemuMigrationSrcNBDStorageCopy(driver, vm, mig,
spec->dest.host.name, spec->dest.host.name,
migrate_speed, migrate_speed,
&migrate_flags, &migrate_flags,
nmigrate_disks, nmigrate_disks,
migrate_disks, migrate_disks,
dconn) < 0) { dconn) < 0) {
goto error; goto error;
} }
} else { } else {
...@@ -3492,9 +3487,9 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, ...@@ -3492,9 +3487,9 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver,
} }
if (mig->nbd && if (mig->nbd &&
qemuMigrationSrcCancelDriveMirror(driver, vm, true, qemuMigrationSrcNBDCopyCancel(driver, vm, true,
QEMU_ASYNC_JOB_MIGRATION_OUT, QEMU_ASYNC_JOB_MIGRATION_OUT,
dconn) < 0) dconn) < 0)
goto error; goto error;
/* When migration was paused before serializing device state we need to /* When migration was paused before serializing device state we need to
...@@ -3579,9 +3574,9 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver, ...@@ -3579,9 +3574,9 @@ qemuMigrationSrcRun(virQEMUDriverPtr driver,
/* cancel any outstanding NBD jobs */ /* cancel any outstanding NBD jobs */
if (mig && mig->nbd) if (mig && mig->nbd)
qemuMigrationSrcCancelDriveMirror(driver, vm, false, qemuMigrationSrcNBDCopyCancel(driver, vm, false,
QEMU_ASYNC_JOB_MIGRATION_OUT, QEMU_ASYNC_JOB_MIGRATION_OUT,
dconn); dconn);
if (priv->job.current->status != QEMU_DOMAIN_JOB_STATUS_CANCELED) if (priv->job.current->status != QEMU_DOMAIN_JOB_STATUS_CANCELED)
priv->job.current->status = QEMU_DOMAIN_JOB_STATUS_FAILED; priv->job.current->status = QEMU_DOMAIN_JOB_STATUS_FAILED;
...@@ -5270,8 +5265,8 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver, ...@@ -5270,8 +5265,8 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver,
} }
} }
if (qemuMigrationSrcCancelDriveMirror(driver, vm, false, if (qemuMigrationSrcNBDCopyCancel(driver, vm, false,
QEMU_ASYNC_JOB_NONE, NULL) < 0) QEMU_ASYNC_JOB_NONE, NULL) < 0)
goto endsyncjob; goto endsyncjob;
ret = 0; ret = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册