* @vm: domain object
* @backup: backup definition
* @terminatebackup: flag whether to terminate and unregister the backup
+ * @asyncJob: currently used qemu asynchronous job type
*
* Sends all active blockjobs which are part of @backup of @vm a signal to
* cancel. If @terminatebackup is true qemuBackupJobTerminate is also called
void
qemuBackupJobCancelBlockjobs(virDomainObjPtr vm,
virDomainBackupDefPtr backup,
- bool terminatebackup)
+ bool terminatebackup,
+ int asyncJob)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
size_t i;
if (backupdisk->state != VIR_DOMAIN_BACKUP_DISK_STATE_RUNNING)
continue;
- qemuDomainObjEnterMonitor(priv->driver, vm);
+ if (qemuDomainObjEnterMonitorAsync(priv->driver, vm, asyncJob) < 0)
+ return;
rc = qemuMonitorJobCancel(priv->mon, job->name, false);
goto endjob;
if (rc < 0) {
- qemuBackupJobCancelBlockjobs(vm, priv->backup, false);
+ qemuBackupJobCancelBlockjobs(vm, priv->backup, false, QEMU_ASYNC_JOB_BACKUP);
goto endjob;
}
}
virDomainDiskDefPtr disk,
qemuBlockjobState state,
unsigned long long cur,
- unsigned long long end)
+ unsigned long long end,
+ int asyncJob)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
bool has_running = false;
return;
if (backup->type == VIR_DOMAIN_BACKUP_TYPE_PULL) {
- qemuDomainObjEnterMonitor(priv->driver, vm);
+ if (qemuDomainObjEnterMonitorAsync(priv->driver, vm, asyncJob) < 0)
+ return;
ignore_value(qemuMonitorNBDServerStop(priv->mon));
if (qemuDomainObjExitMonitor(priv->driver, vm) < 0)
return;
if (has_running && (has_failed || has_cancelled)) {
/* cancel the rest of the jobs */
- qemuBackupJobCancelBlockjobs(vm, backup, false);
+ qemuBackupJobCancelBlockjobs(vm, backup, false, asyncJob);
} else if (!has_running && !has_cancelling) {
/* all sub-jobs have stopped */
void
qemuBackupJobCancelBlockjobs(virDomainObjPtr vm,
virDomainBackupDefPtr backup,
- bool terminatebackup);
+ bool terminatebackup,
+ int asyncJob);
void
qemuBackupNotifyBlockjobEnd(virDomainObjPtr vm,
virDomainDiskDefPtr disk,
qemuBlockjobState state,
unsigned long long cur,
- unsigned long long end);
+ unsigned long long end,
+ int asyncJob);
+
int
qemuBackupGetJobInfoStats(virQEMUDriverPtr driver,
g_autoptr(qemuBlockStorageSourceAttachData) backend = NULL;
g_autoptr(virJSONValue) actions = NULL;
- qemuBackupNotifyBlockjobEnd(vm, job->disk, newstate, progressCurrent, progressTotal);
+ qemuBackupNotifyBlockjobEnd(vm, job->disk, newstate,
+ progressCurrent, progressTotal, asyncJob);
if (job->data.backup.store &&
!(backend = qemuBlockStorageSourceDetachPrepare(job->data.backup.store, NULL)))