mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
qemu: blockjob: Convert qemuBlockJobSyncBeginDisk to work with the job
Modify qemuBlockJobSyncBeginDisk to operate on qemuBlockt sJobDataPtr and rename it accordingly. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
0ba9afc6b2
commit
728830be9b
@ -360,7 +360,8 @@ qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
||||
|
||||
|
||||
/**
|
||||
* qemuBlockJobSyncBeginDisk:
|
||||
* qemuBlockJobSyncBegin:
|
||||
* @job: block job data
|
||||
* @disk: domain disk
|
||||
*
|
||||
* Begin a new synchronous block job for @disk. The synchronous
|
||||
@ -373,11 +374,14 @@ qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
||||
* is called.
|
||||
*/
|
||||
void
|
||||
qemuBlockJobSyncBeginDisk(virDomainDiskDefPtr disk)
|
||||
qemuBlockJobSyncBegin(qemuBlockJobDataPtr job)
|
||||
{
|
||||
qemuBlockJobDataPtr job = QEMU_DOMAIN_DISK_PRIVATE(disk)->blockjob;
|
||||
const char *diskdst = NULL;
|
||||
|
||||
VIR_DEBUG("disk=%s", disk->dst);
|
||||
if (job->disk)
|
||||
diskdst = job->disk->dst;
|
||||
|
||||
VIR_DEBUG("disk=%s", NULLSTR(diskdst));
|
||||
job->synchronous = true;
|
||||
job->newstate = -1;
|
||||
}
|
||||
|
@ -80,7 +80,7 @@ int qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
||||
virDomainDiskDefPtr disk,
|
||||
char **error);
|
||||
|
||||
void qemuBlockJobSyncBeginDisk(virDomainDiskDefPtr disk);
|
||||
void qemuBlockJobSyncBegin(qemuBlockJobDataPtr job);
|
||||
void qemuBlockJobSyncEndDisk(virDomainObjPtr vm,
|
||||
int asyncJob,
|
||||
virDomainDiskDefPtr disk);
|
||||
|
@ -17364,6 +17364,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
||||
bool save = false;
|
||||
bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT);
|
||||
bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC);
|
||||
qemuBlockJobDataPtr job = NULL;
|
||||
virDomainObjPtr vm;
|
||||
int ret = -1;
|
||||
|
||||
@ -17391,6 +17392,12 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
||||
if (!(device = qemuAliasDiskDriveFromDisk(disk)))
|
||||
goto endjob;
|
||||
|
||||
if (!(job = qemuBlockJobDiskGetJob(disk))) {
|
||||
virReportError(VIR_ERR_INVALID_ARG,
|
||||
_("disk %s does not have an active block job"), disk->dst);
|
||||
goto endjob;
|
||||
}
|
||||
|
||||
if (disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_NONE &&
|
||||
disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_READY) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID,
|
||||
@ -17400,7 +17407,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
||||
}
|
||||
|
||||
if (!async)
|
||||
qemuBlockJobSyncBeginDisk(disk);
|
||||
qemuBlockJobSyncBegin(job);
|
||||
|
||||
if (pivot) {
|
||||
if ((ret = qemuDomainBlockPivot(driver, vm, device, disk)) < 0)
|
||||
@ -17455,6 +17462,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
||||
qemuDomainObjEndJob(driver, vm);
|
||||
|
||||
cleanup:
|
||||
virObjectUnref(job);
|
||||
virObjectUnref(cfg);
|
||||
VIR_FREE(device);
|
||||
virDomainObjEndAPI(&vm);
|
||||
|
@ -911,7 +911,7 @@ qemuMigrationSrcNBDStorageCopyOne(virQEMUDriverPtr driver,
|
||||
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY)))
|
||||
goto cleanup;
|
||||
|
||||
qemuBlockJobSyncBeginDisk(disk);
|
||||
qemuBlockJobSyncBegin(job);
|
||||
|
||||
if (flags & VIR_MIGRATE_TLS) {
|
||||
rc = qemuMigrationSrcNBDStorageCopyBlockdev(driver, vm,
|
||||
@ -5392,16 +5392,19 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver,
|
||||
for (i = 0; i < vm->def->ndisks; i++) {
|
||||
virDomainDiskDefPtr disk = vm->def->disks[i];
|
||||
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
|
||||
qemuBlockJobDataPtr job;
|
||||
|
||||
if (!diskPriv->blockjob->started)
|
||||
if (!(job = qemuBlockJobDiskGetJob(disk)) ||
|
||||
!job->started)
|
||||
diskPriv->migrating = false;
|
||||
|
||||
if (diskPriv->migrating) {
|
||||
qemuBlockJobSyncBeginDisk(disk);
|
||||
qemuBlockJobSyncBegin(job);
|
||||
storage = true;
|
||||
}
|
||||
}
|
||||
|
||||
virObjectUnref(job);
|
||||
}
|
||||
|
||||
if (storage &&
|
||||
qemuMigrationSrcNBDCopyCancel(driver, vm, false,
|
||||
|
Loading…
x
Reference in New Issue
Block a user