summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Krempa <pkrempa@redhat.com>2023-05-15 14:20:16 +0200
committerPeter Krempa <pkrempa@redhat.com>2023-05-16 10:26:33 +0200
commit1222ada2afe62279ce4c8844694b3cb756ddd60b (patch)
tree21bcff7ed5fcfbc9e24118a2f0b130a277ef78cf
parentde48ade19586fda704d4f517ffb219960c3d6a08 (diff)
downloadlibvirt-1222ada2afe62279ce4c8844694b3cb756ddd60b.tar.gz
conf: backup: Fix logic for generating default backup filenames
If the 'disk->store' property is already allocated which happens e.g. when the disk is described by the backup XML but the optional filename is not filled in 'virDomainBackupDefAssignStore' would not fill in the default location. Fix the logic to do it also if a 'virStorageSource' categorizes as empty. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
-rw-r--r--src/conf/backup_conf.c7
-rw-r--r--tests/domainbackupxml2xmlin/backup-push.xml1
-rw-r--r--tests/domainbackupxml2xmlout/backup-push.xml3
3 files changed, 9 insertions, 2 deletions
diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
index 013c08cd6e..e151c29738 100644
--- a/src/conf/backup_conf.c
+++ b/src/conf/backup_conf.c
@@ -424,7 +424,8 @@ virDomainBackupDefAssignStore(virDomainBackupDiskDef *disk,
}
}
- if (!disk->store) {
+ if (!disk->store ||
+ virStorageSourceIsEmpty(disk->store)) {
if (virStorageSourceGetActualType(src) != VIR_STORAGE_TYPE_FILE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("refusing to generate file name for disk '%1$s'"),
@@ -432,7 +433,9 @@ virDomainBackupDefAssignStore(virDomainBackupDiskDef *disk,
return -1;
}
- disk->store = virStorageSourceNew();
+ if (!disk->store)
+ disk->store = virStorageSourceNew();
+
disk->store->type = VIR_STORAGE_TYPE_FILE;
disk->store->path = g_strdup_printf("%s.%s", src->path, suffix);
}
diff --git a/tests/domainbackupxml2xmlin/backup-push.xml b/tests/domainbackupxml2xmlin/backup-push.xml
index 0bfec9b270..a95833d407 100644
--- a/tests/domainbackupxml2xmlin/backup-push.xml
+++ b/tests/domainbackupxml2xmlin/backup-push.xml
@@ -5,6 +5,7 @@
<driver type='raw'/>
<target file='/path/to/file'/>
</disk>
+ <disk name='vdb' type='file' backupmode='full'/>
<disk name='hda' backup='no'/>
</disks>
</domainbackup>
diff --git a/tests/domainbackupxml2xmlout/backup-push.xml b/tests/domainbackupxml2xmlout/backup-push.xml
index 317dcf6e47..fff7db716b 100644
--- a/tests/domainbackupxml2xmlout/backup-push.xml
+++ b/tests/domainbackupxml2xmlout/backup-push.xml
@@ -5,6 +5,9 @@
<driver type='raw'/>
<target file='/path/to/file'/>
</disk>
+ <disk name='vdb' backup='yes' type='file' backupmode='full'>
+ <target file='/fake/vdb.qcow2.SUFFIX'/>
+ </disk>
<disk name='hda' backup='no'/>
<disk name='vdextradisk' backup='no'/>
</disks>