void
qemuBackupNotifyBlockjobEnd(virDomainObj *vm,
- virDomainDiskDef *disk,
+ const char *diskdst,
qemuBlockjobState state,
const char *errmsg,
unsigned long long cur,
size_t i;
VIR_DEBUG("vm: '%s', disk:'%s', state:'%d' errmsg:'%s'",
- vm->def->name, disk->dst, state, NULLSTR(errmsg));
+ vm->def->name, NULLSTR(diskdst), state, NULLSTR(errmsg));
if (!backup)
return;
if (!backupdisk->store)
continue;
- if (STREQ(disk->dst, backupdisk->name)) {
+ if (STREQ_NULLABLE(diskdst, backupdisk->name)) {
switch (state) {
case QEMU_BLOCKJOB_STATE_COMPLETED:
backupdisk->state = VIR_DOMAIN_BACKUP_DISK_STATE_COMPLETE;
unsigned long long progressTotal)
{
g_autoptr(qemuBlockStorageSourceAttachData) backend = NULL;
+ const char *diskdst = NULL;
+
+ if (job->disk)
+ diskdst = job->disk->dst;
- qemuBackupNotifyBlockjobEnd(vm, job->disk, newstate, job->errmsg,
+ qemuBackupNotifyBlockjobEnd(vm, diskdst, newstate, job->errmsg,
progressCurrent, progressTotal, asyncJob);
if (job->data.backup.store &&
if (backend)
qemuBlockStorageSourceAttachRollback(qemuDomainGetMonitor(vm), backend);
- if (job->data.backup.bitmap)
+ if (job->disk &&
+ job->data.backup.bitmap)
qemuMonitorBitmapRemove(qemuDomainGetMonitor(vm),
qemuBlockStorageSourceGetEffectiveNodename(job->disk->src),
job->data.backup.bitmap);