[libvirt] [PATCH RFC 24/51] qemu: blockjob: Track current state of blockjob
Ján Tomko
jtomko at redhat.com
Mon Jan 7 14:44:17 UTC 2019
On Wed, Dec 12, 2018 at 06:08:40PM +0100, Peter Krempa wrote:
>Add a field tracking the current state of job so that it can be queried
>later. Until now the job state e.g. that the job is _READY for
>finalizing was tracked only for mirror jobs. Add tracking of state for
>all jobs.
>
>Similarly to 'qemuBlockJobType' this maps the existing states of the
>blockjob from virConnectDomainEventBlockJobStatus to
>'qemuBlockJobState' so that we can track some internal states as well.
>
>Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>---
> src/qemu/qemu_blockjob.c | 23 +++++++++++++++--------
> src/qemu/qemu_blockjob.h | 22 +++++++++++++++++++++-
> src/qemu/qemu_domain.c | 5 +++--
> src/qemu/qemu_driver.c | 3 +--
> src/qemu/qemu_migration.c | 8 ++++++--
> src/qemu/qemu_process.c | 4 +++-
> 6 files changed, 49 insertions(+), 16 deletions(-)
>
>diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
>index b9119c5b89..bde8697ede 100644
>--- a/src/qemu/qemu_migration.c
>+++ b/src/qemu/qemu_migration.c
>@@ -702,8 +702,10 @@ qemuMigrationSrcNBDCopyCancel(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)) ||
>+ !qemuBlockJobIsRunning(job))
> diskPriv->migrating = false;
>
> if (!diskPriv->migrating)
There is 'continue;' right after, so we'll forget to unref job in the
case qemuBlockJobDiskGetJob returns non-NULL, but the job is not
running.
>@@ -720,6 +722,8 @@ qemuMigrationSrcNBDCopyCancel(virQEMUDriverPtr driver,
> qemuBlockJobSyncEndDisk(vm, asyncJob, disk);
> diskPriv->migrating = false;
> }
>+
>+ virObjectUnref(job);
> }
>
> while ((rv = qemuMigrationSrcNBDCopyCancelled(vm, asyncJob, check)) != 1) {
Reviewed-by: Ján Tomko <jtomko at redhat.com>
Jano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20190107/38de310b/attachment-0001.sig>
More information about the libvir-list
mailing list