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
|
* @disk: domain disk
|
||||||
*
|
*
|
||||||
* Begin a new synchronous block job for @disk. The synchronous
|
* Begin a new synchronous block job for @disk. The synchronous
|
||||||
@ -373,11 +374,14 @@ qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
|||||||
* is called.
|
* is called.
|
||||||
*/
|
*/
|
||||||
void
|
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->synchronous = true;
|
||||||
job->newstate = -1;
|
job->newstate = -1;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ int qemuBlockJobUpdateDisk(virDomainObjPtr vm,
|
|||||||
virDomainDiskDefPtr disk,
|
virDomainDiskDefPtr disk,
|
||||||
char **error);
|
char **error);
|
||||||
|
|
||||||
void qemuBlockJobSyncBeginDisk(virDomainDiskDefPtr disk);
|
void qemuBlockJobSyncBegin(qemuBlockJobDataPtr job);
|
||||||
void qemuBlockJobSyncEndDisk(virDomainObjPtr vm,
|
void qemuBlockJobSyncEndDisk(virDomainObjPtr vm,
|
||||||
int asyncJob,
|
int asyncJob,
|
||||||
virDomainDiskDefPtr disk);
|
virDomainDiskDefPtr disk);
|
||||||
|
@ -17364,6 +17364,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
|||||||
bool save = false;
|
bool save = false;
|
||||||
bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT);
|
bool pivot = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT);
|
||||||
bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC);
|
bool async = !!(flags & VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC);
|
||||||
|
qemuBlockJobDataPtr job = NULL;
|
||||||
virDomainObjPtr vm;
|
virDomainObjPtr vm;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
@ -17391,6 +17392,12 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
|||||||
if (!(device = qemuAliasDiskDriveFromDisk(disk)))
|
if (!(device = qemuAliasDiskDriveFromDisk(disk)))
|
||||||
goto endjob;
|
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 &&
|
if (disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_NONE &&
|
||||||
disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_READY) {
|
disk->mirrorState != VIR_DOMAIN_DISK_MIRROR_STATE_READY) {
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID,
|
virReportError(VIR_ERR_OPERATION_INVALID,
|
||||||
@ -17400,7 +17407,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!async)
|
if (!async)
|
||||||
qemuBlockJobSyncBeginDisk(disk);
|
qemuBlockJobSyncBegin(job);
|
||||||
|
|
||||||
if (pivot) {
|
if (pivot) {
|
||||||
if ((ret = qemuDomainBlockPivot(driver, vm, device, disk)) < 0)
|
if ((ret = qemuDomainBlockPivot(driver, vm, device, disk)) < 0)
|
||||||
@ -17455,6 +17462,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom,
|
|||||||
qemuDomainObjEndJob(driver, vm);
|
qemuDomainObjEndJob(driver, vm);
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
|
virObjectUnref(job);
|
||||||
virObjectUnref(cfg);
|
virObjectUnref(cfg);
|
||||||
VIR_FREE(device);
|
VIR_FREE(device);
|
||||||
virDomainObjEndAPI(&vm);
|
virDomainObjEndAPI(&vm);
|
||||||
|
@ -911,7 +911,7 @@ qemuMigrationSrcNBDStorageCopyOne(virQEMUDriverPtr driver,
|
|||||||
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY)))
|
if (!(job = qemuBlockJobDiskNew(disk, QEMU_BLOCKJOB_TYPE_COPY)))
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
qemuBlockJobSyncBeginDisk(disk);
|
qemuBlockJobSyncBegin(job);
|
||||||
|
|
||||||
if (flags & VIR_MIGRATE_TLS) {
|
if (flags & VIR_MIGRATE_TLS) {
|
||||||
rc = qemuMigrationSrcNBDStorageCopyBlockdev(driver, vm,
|
rc = qemuMigrationSrcNBDStorageCopyBlockdev(driver, vm,
|
||||||
@ -5392,16 +5392,19 @@ qemuMigrationSrcCancel(virQEMUDriverPtr driver,
|
|||||||
for (i = 0; i < vm->def->ndisks; i++) {
|
for (i = 0; i < vm->def->ndisks; i++) {
|
||||||
virDomainDiskDefPtr disk = vm->def->disks[i];
|
virDomainDiskDefPtr disk = vm->def->disks[i];
|
||||||
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
|
qemuDomainDiskPrivatePtr diskPriv = QEMU_DOMAIN_DISK_PRIVATE(disk);
|
||||||
|
qemuBlockJobDataPtr job;
|
||||||
|
|
||||||
if (!diskPriv->blockjob->started)
|
if (!(job = qemuBlockJobDiskGetJob(disk)) ||
|
||||||
|
!job->started)
|
||||||
diskPriv->migrating = false;
|
diskPriv->migrating = false;
|
||||||
|
|
||||||
if (diskPriv->migrating) {
|
if (diskPriv->migrating) {
|
||||||
qemuBlockJobSyncBeginDisk(disk);
|
qemuBlockJobSyncBegin(job);
|
||||||
storage = true;
|
storage = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
virObjectUnref(job);
|
||||||
|
}
|
||||||
|
|
||||||
if (storage &&
|
if (storage &&
|
||||||
qemuMigrationSrcNBDCopyCancel(driver, vm, false,
|
qemuMigrationSrcNBDCopyCancel(driver, vm, false,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user