/**
* qemuBlockJobUpdate:
- * @driver: qemu driver
* @vm: domain
* @disk: domain disk
* @error: error (output parameter)
* Returns the block job event processed or -1 if there was no pending event.
*/
int
-qemuBlockJobUpdate(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+qemuBlockJobUpdate(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob,
virDomainDiskDefPtr disk,
char **error)
{
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
+ qemuDomainObjPrivatePtr priv = vm->privateData;
int status = diskPriv->blockJobStatus;
if (error)
*error = NULL;
if (status != -1) {
- qemuBlockJobEventProcess(driver, vm, disk, asyncJob,
+ qemuBlockJobEventProcess(priv->driver, vm, disk, asyncJob,
diskPriv->blockJobType,
diskPriv->blockJobStatus);
diskPriv->blockJobStatus = -1;
/**
* qemuBlockJobSyncEnd:
- * @driver: qemu driver
* @vm: domain
* @disk: domain disk
*
* for the disk is processed.
*/
void
-qemuBlockJobSyncEnd(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+qemuBlockJobSyncEnd(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob,
virDomainDiskDefPtr disk)
{
VIR_DEBUG("disk=%s", disk->dst);
- qemuBlockJobUpdate(driver, vm, asyncJob, disk, NULL);
+ qemuBlockJobUpdate(vm, asyncJob, disk, NULL);
QEMU_DOMAIN_DISK_PRIVATE(disk)->blockJobSync = false;
}
* block jobs from confusing us. */
if (!async) {
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
- qemuBlockJobUpdate(driver, vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
+ qemuBlockJobUpdate(vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
while (diskPriv->blockjob) {
if (virDomainObjWait(vm) < 0) {
ret = -1;
goto endjob;
}
- qemuBlockJobUpdate(driver, vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
+ qemuBlockJobUpdate(vm, QEMU_ASYNC_JOB_NONE, disk, NULL);
}
}
endjob:
if (disk)
- qemuBlockJobSyncEnd(driver, vm, QEMU_ASYNC_JOB_NONE, disk);
+ qemuBlockJobSyncEnd(vm, QEMU_ASYNC_JOB_NONE, disk);
qemuDomainObjEndJob(driver, vm);
cleanup:
/**
* qemuMigrationSrcDriveMirrorReady:
- * @driver: qemu driver
* @vm: domain
*
* Check the status of all drive-mirrors started by
* -1 on error.
*/
static int
-qemuMigrationSrcDriveMirrorReady(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+qemuMigrationSrcDriveMirrorReady(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob)
{
size_t i;
if (!diskPriv->migrating)
continue;
- status = qemuBlockJobUpdate(driver, vm, asyncJob, disk, &error);
+ status = qemuBlockJobUpdate(vm, asyncJob, disk, &error);
if (status == VIR_DOMAIN_BLOCK_JOB_FAILED) {
if (error) {
virReportError(VIR_ERR_OPERATION_FAILED,
* -2 all mirrors are gone but some of them failed.
*/
static int
-qemuMigrationDriveMirrorCancelled(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+qemuMigrationDriveMirrorCancelled(virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob,
bool check)
{
if (!diskPriv->migrating)
continue;
- status = qemuBlockJobUpdate(driver, vm, asyncJob, disk, &error);
+ status = qemuBlockJobUpdate(vm, asyncJob, disk, &error);
switch (status) {
case VIR_DOMAIN_BLOCK_JOB_FAILED:
if (check) {
ATTRIBUTE_FALLTHROUGH;
case VIR_DOMAIN_BLOCK_JOB_CANCELED:
case VIR_DOMAIN_BLOCK_JOB_COMPLETED:
- qemuBlockJobSyncEnd(driver, vm, asyncJob, disk);
+ qemuBlockJobSyncEnd(vm, asyncJob, disk);
diskPriv->migrating = false;
break;
int status;
int rv;
- status = qemuBlockJobUpdate(driver, vm, asyncJob, disk, &error);
+ status = qemuBlockJobUpdate(vm, asyncJob, disk, &error);
switch (status) {
case VIR_DOMAIN_BLOCK_JOB_FAILED:
case VIR_DOMAIN_BLOCK_JOB_CANCELED:
err = virSaveLastError();
failed = true;
}
- qemuBlockJobSyncEnd(driver, vm, asyncJob, disk);
+ qemuBlockJobSyncEnd(vm, asyncJob, disk);
diskPriv->migrating = false;
}
}
- while ((rv = qemuMigrationDriveMirrorCancelled(driver, vm, asyncJob,
+ while ((rv = qemuMigrationDriveMirrorCancelled(vm, asyncJob,
check)) != 1) {
if (check && !failed &&
dconn && virConnectIsAlive(dconn) <= 0) {
VIR_FREE(nbd_dest);
if (qemuDomainObjExitMonitor(driver, vm) < 0 || mon_ret < 0) {
- qemuBlockJobSyncEnd(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, disk);
+ qemuBlockJobSyncEnd(vm, QEMU_ASYNC_JOB_MIGRATION_OUT, disk);
goto cleanup;
}
diskPriv->migrating = true;
}
}
- while ((rv = qemuMigrationSrcDriveMirrorReady(driver, vm,
+ while ((rv = qemuMigrationSrcDriveMirrorReady(vm,
QEMU_ASYNC_JOB_MIGRATION_OUT)) != 1) {
if (rv < 0)
goto cleanup;
/* This flag should only be set when run on src host */
if (flags & QEMU_MIGRATION_COMPLETED_CHECK_STORAGE &&
- qemuMigrationSrcDriveMirrorReady(driver, vm, asyncJob) < 0)
+ qemuMigrationSrcDriveMirrorReady(vm, asyncJob) < 0)
goto error;
if (flags & QEMU_MIGRATION_COMPLETED_ABORT_ON_ERROR &&
VIR_DEBUG("Drive mirror on disk %s is still running", disk->dst);
} else {
VIR_DEBUG("Drive mirror on disk %s is gone", disk->dst);
- qemuBlockJobSyncEnd(driver, vm, QEMU_ASYNC_JOB_NONE, disk);
+ qemuBlockJobSyncEnd(vm, QEMU_ASYNC_JOB_NONE, disk);
diskPriv->migrating = false;
}
}
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
if (diskPriv->migrating) {
- qemuBlockJobSyncEnd(driver, vm, QEMU_ASYNC_JOB_NONE, disk);
+ qemuBlockJobSyncEnd(vm, QEMU_ASYNC_JOB_NONE, disk);
diskPriv->migrating = false;
}
}