[libvirt] [PATCH 0/2] qemu: blockjob: Tweak config saving in legacy block job handling (blockdev-add saga)

This is based on quite a lot of patches that were ACK'd but I didn't push them yet, so feel free to fetch this at: git fetch https://gitlab.com/pipo.sk/libvirt.git legacy-job-refactor Peter Krempa (2): qemu: blockjob: Save config only in qemuBlockJobEventProcessLegacyCompleted qemu: blockjob: Update new job state earlier in qemuBlockJobEventProcessLegacy src/qemu/qemu_blockjob.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) -- 2.21.0

There's no need to do it if the job is not completed. The new helper allows to do this with much less hassle in the correct place. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_blockjob.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index c102417e43..097d87f663 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -315,6 +315,7 @@ qemuBlockJobEventProcessLegacyCompleted(virQEMUDriverPtr driver, ignore_value(qemuDomainDetermineDiskChain(driver, vm, disk, NULL, true)); ignore_value(qemuBlockNodeNamesDetect(driver, vm, asyncJob)); qemuBlockJobUnregister(job); + qemuDomainSaveConfig(vm); } @@ -381,12 +382,6 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver, if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) VIR_WARN("Unable to save status on vm %s after block job", vm->def->name); - - if (job->state == VIR_DOMAIN_BLOCK_JOB_COMPLETED && vm->newDef) { - if (virDomainSaveConfig(cfg->configDir, driver->caps, vm->newDef) < 0) - VIR_WARN("Unable to update persistent definition on vm %s " - "after block job", vm->def->name); - } } -- 2.21.0

The legacy job handler does not look at the old job state so we can update it earlier. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_blockjob.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/qemu/qemu_blockjob.c b/src/qemu/qemu_blockjob.c index 097d87f663..08d131ca2b 100644 --- a/src/qemu/qemu_blockjob.c +++ b/src/qemu/qemu_blockjob.c @@ -350,9 +350,12 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver, qemuBlockJobEmitEvents(driver, vm, disk, job->type, job->newstate); + job->state = job->newstate; + job->newstate = -1; + /* If we completed a block pull or commit, then update the XML * to match. */ - switch ((virConnectDomainEventBlockJobStatus) job->newstate) { + switch ((virConnectDomainEventBlockJobStatus) job->state) { case VIR_DOMAIN_BLOCK_JOB_COMPLETED: qemuBlockJobEventProcessLegacyCompleted(driver, vm, job, asyncJob); break; @@ -377,9 +380,6 @@ qemuBlockJobEventProcessLegacy(virQEMUDriverPtr driver, break; } - job->state = job->newstate; - job->newstate = -1; - if (virDomainSaveStatus(driver->xmlopt, cfg->stateDir, vm, driver->caps) < 0) VIR_WARN("Unable to save status on vm %s after block job", vm->def->name); } -- 2.21.0

On Wed, Jul 17, 2019 at 04:22:20PM +0200, Peter Krempa wrote:
The legacy job handler does not look at the old job state so we can update it earlier.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_blockjob.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

On Wed, Jul 17, 2019 at 04:22:15PM +0200, Peter Krempa wrote:
This is based on quite a lot of patches that were ACK'd but I didn't push them yet, so feel free to fetch this at:
git fetch https://gitlab.com/pipo.sk/libvirt.git legacy-job-refactor
Peter Krempa (2): qemu: blockjob: Save config only in qemuBlockJobEventProcessLegacyCompleted qemu: blockjob: Update new job state earlier in qemuBlockJobEventProcessLegacy
src/qemu/qemu_blockjob.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa