mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
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: Peter Krempa <pkrempa@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
99223c8cca
commit
8bad8e7bf0
@ -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,
|
|||||||
* -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,
|
|||||||
* -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,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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,
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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,
|
|||||||
* @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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
/* 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,
|
|||||||
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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* 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,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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,
|
|||||||
|
|
||||||
/* 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,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user