[libvirt] [PATCH v2 22/25] qemu: driver: Allow cancellation of the backup job

Ján Tomko jtomko at redhat.com
Mon Dec 9 16:55:41 UTC 2019


On Thu, Dec 05, 2019 at 02:18:38PM +0100, Peter Krempa wrote:
>On Wed, Dec 04, 2019 at 11:20:55 +0000, Daniel Berrange wrote:
>> On Tue, Dec 03, 2019 at 06:17:44PM +0100, Peter Krempa wrote:
>> > Use the helper which cancels all blockjobs to perform the backup job
>> > cancellation in qemuDomainAbortJob.
>> >
>> > Signed-off-by: Peter Krempa <pkrempa at redhat.com>
>> > ---
>> >  src/qemu/qemu_driver.c | 15 ++++++++++-----
>> >  1 file changed, 10 insertions(+), 5 deletions(-)
>> >
>> > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> > index 95882d9d14..2408b08106 100644
>> > --- a/src/qemu/qemu_driver.c
>> > +++ b/src/qemu/qemu_driver.c
>> > @@ -14054,11 +14054,16 @@ static int qemuDomainAbortJob(virDomainPtr dom)
>> >      }
>> >
>> >      VIR_DEBUG("Cancelling job at client request");
>> > -    qemuDomainObjAbortAsyncJob(vm);
>> > -    qemuDomainObjEnterMonitor(driver, vm);
>> > -    ret = qemuMonitorMigrateCancel(priv->mon);
>> > -    if (qemuDomainObjExitMonitor(driver, vm) < 0)
>> > -        ret = -1;
>> > +    if (priv->job.asyncJob == QEMU_ASYNC_JOB_BACKUP) {
>> > +        qemuBackupJobCancelBlockjobs(vm, priv->backup, true);
>> > +        ret = 0;
>> > +    } else {
>> > +        qemuDomainObjAbortAsyncJob(vm);
>> > +        qemuDomainObjEnterMonitor(driver, vm);
>> > +        ret = qemuMonitorMigrateCancel(priv->mon);
>> > +        if (qemuDomainObjExitMonitor(driver, vm) < 0)
>> > +            ret = -1;
>> > +    }
>>
>> Hmm, this makes me thing we should have had some better error checking
>> in here already. IIUC, we have other types async job that are not
>> related to either migration or backups, so should we do
>>
>>    switch (priv->job.asyncJob) {
>>         case QEMU_ASYNC_JOB_BACKUP:
>> 	   ...
>>         case QEMU_ASYNC_JOB_MIGRATE:
>> 	   ...
>> 	case QEMU_ASYNC_JOB....
>> 	default:
>> 	  report error
>
>This is now done upstream. The new version of the patch after merging
>with upstream:
>
>
>diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>index 93b6107f6c..72694dc8d0 100644
>--- a/src/qemu/qemu_driver.c
>+++ b/src/qemu/qemu_driver.c
>@@ -14091,7 +14091,8 @@ static int qemuDomainAbortJob(virDomainPtr dom)
>         break;
>
>     case QEMU_ASYNC_JOB_BACKUP:
>-        /* TODO: to be implemented later */
>+        qemuBackupJobCancelBlockjobs(vm, priv->backup, true);
>+        ret = 0;
>         break;
>

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/20191209/311573a2/attachment-0001.sig>


More information about the libvir-list mailing list