|
|
a41c76 |
From 100ae962cd0f4dbfd5270bc2d61f05ec1c524c0a Mon Sep 17 00:00:00 2001
|
|
|
a41c76 |
Message-Id: <100ae962cd0f4dbfd5270bc2d61f05ec1c524c0a@dist-git>
|
|
|
a41c76 |
From: Peter Krempa <pkrempa@redhat.com>
|
|
|
a41c76 |
Date: Tue, 4 Feb 2020 15:07:40 +0100
|
|
|
a41c76 |
Subject: [PATCH] conf: backup: Allow configuration of names exported via NBD
|
|
|
a41c76 |
MIME-Version: 1.0
|
|
|
a41c76 |
Content-Type: text/plain; charset=UTF-8
|
|
|
a41c76 |
Content-Transfer-Encoding: 8bit
|
|
|
a41c76 |
|
|
|
a41c76 |
If users wish to use different name for exported disks or bitmaps
|
|
|
a41c76 |
the new fields allow to do so. Additionally they also document the
|
|
|
a41c76 |
current settings.
|
|
|
a41c76 |
|
|
|
a41c76 |
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
|
|
|
a41c76 |
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
|
|
|
a41c76 |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
a41c76 |
(cherry picked from commit 12ccd8d4db12d71a270d903701a8edb83d41f127)
|
|
|
a41c76 |
|
|
|
a41c76 |
https://bugzilla.redhat.com/show_bug.cgi?id=1207659
|
|
|
a41c76 |
Message-Id: <8043f75d8d4b4ae7e7ae3671d71407f733e6a3cf.1580824112.git.pkrempa@redhat.com>
|
|
|
a41c76 |
Reviewed-by: Ján Tomko <jtomko@redhat.com>
|
|
|
a41c76 |
---
|
|
|
a41c76 |
docs/formatbackup.html.in | 9 +++++++++
|
|
|
a41c76 |
docs/schemas/domainbackup.rng | 8 ++++++++
|
|
|
a41c76 |
src/conf/backup_conf.c | 10 ++++++++++
|
|
|
a41c76 |
src/conf/backup_conf.h | 2 ++
|
|
|
a41c76 |
tests/domainbackupxml2xmlin/backup-pull-seclabel.xml | 2 +-
|
|
|
a41c76 |
tests/domainbackupxml2xmlout/backup-pull-seclabel.xml | 2 +-
|
|
|
a41c76 |
6 files changed, 31 insertions(+), 2 deletions(-)
|
|
|
a41c76 |
|
|
|
a41c76 |
diff --git a/docs/formatbackup.html.in b/docs/formatbackup.html.in
|
|
|
a41c76 |
index 1c690901c7..543d913072 100644
|
|
|
a41c76 |
--- a/docs/formatbackup.html.in
|
|
|
a41c76 |
+++ b/docs/formatbackup.html.in
|
|
|
a41c76 |
@@ -85,6 +85,15 @@
|
|
|
a41c76 |
Setting this attribute to yes (default) specifies
|
|
|
a41c76 |
that the disk should take part in the backup and using
|
|
|
a41c76 |
no excludes the disk from the backup.
|
|
|
a41c76 |
+ exportname
|
|
|
a41c76 |
+ Allows modification of the NBD export name for the given disk.
|
|
|
a41c76 |
+ By default equal to disk target.
|
|
|
a41c76 |
+ Valid only for pull mode backups.
|
|
|
a41c76 |
+ exportbitmap
|
|
|
a41c76 |
+ Allows modification of the name of the bitmap describing dirty
|
|
|
a41c76 |
+ blocks for an incremental backup exported via NBD export name
|
|
|
a41c76 |
+ for the given disk.
|
|
|
a41c76 |
+ Valid only for pull mode backups.
|
|
|
a41c76 |
type
|
|
|
a41c76 |
A mandatory attribute to describe the type of the
|
|
|
a41c76 |
disk, except when backup='no' is
|
|
|
a41c76 |
diff --git a/docs/schemas/domainbackup.rng b/docs/schemas/domainbackup.rng
|
|
|
a41c76 |
index c1e4d80302..395ea841f9 100644
|
|
|
a41c76 |
--- a/docs/schemas/domainbackup.rng
|
|
|
a41c76 |
+++ b/docs/schemas/domainbackup.rng
|
|
|
a41c76 |
@@ -165,6 +165,14 @@
|
|
|
a41c76 |
<attribute name='name'>
|
|
|
a41c76 |
<ref name='diskTarget'/>
|
|
|
a41c76 |
</attribute>
|
|
|
a41c76 |
+ <optional>
|
|
|
a41c76 |
+ <attribute name='exportname'>
|
|
|
a41c76 |
+ <text/>
|
|
|
a41c76 |
+ </attribute>
|
|
|
a41c76 |
+ <attribute name='exportbitmap'>
|
|
|
a41c76 |
+ <text/>
|
|
|
a41c76 |
+ </attribute>
|
|
|
a41c76 |
+ </optional>
|
|
|
a41c76 |
<choice>
|
|
|
a41c76 |
<group>
|
|
|
a41c76 |
<attribute name='backup'>
|
|
|
a41c76 |
diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c
|
|
|
a41c76 |
index 61dc8cd4b2..b370b686f1 100644
|
|
|
a41c76 |
--- a/src/conf/backup_conf.c
|
|
|
a41c76 |
+++ b/src/conf/backup_conf.c
|
|
|
a41c76 |
@@ -71,6 +71,8 @@ virDomainBackupDefFree(virDomainBackupDefPtr def)
|
|
|
a41c76 |
virDomainBackupDiskDefPtr disk = def->disks + i;
|
|
|
a41c76 |
|
|
|
a41c76 |
g_free(disk->name);
|
|
|
a41c76 |
+ g_free(disk->exportname);
|
|
|
a41c76 |
+ g_free(disk->exportbitmap);
|
|
|
a41c76 |
virObjectUnref(disk->store);
|
|
|
a41c76 |
}
|
|
|
a41c76 |
|
|
|
a41c76 |
@@ -124,6 +126,11 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
|
|
|
a41c76 |
if (def->backup == VIR_TRISTATE_BOOL_NO)
|
|
|
a41c76 |
return 0;
|
|
|
a41c76 |
|
|
|
a41c76 |
+ if (!push) {
|
|
|
a41c76 |
+ def->exportname = virXMLPropString(node, "exportname");
|
|
|
a41c76 |
+ def->exportbitmap = virXMLPropString(node, "exportbitmap");
|
|
|
a41c76 |
+ }
|
|
|
a41c76 |
+
|
|
|
a41c76 |
if (internal) {
|
|
|
a41c76 |
if (!(state = virXMLPropString(node, "state")) ||
|
|
|
a41c76 |
(tmp = virDomainBackupDiskStateTypeFromString(state)) < 0) {
|
|
|
a41c76 |
@@ -333,6 +340,9 @@ virDomainBackupDiskDefFormat(virBufferPtr buf,
|
|
|
a41c76 |
if (disk->backup == VIR_TRISTATE_BOOL_YES) {
|
|
|
a41c76 |
virBufferAsprintf(&attrBuf, " type='%s'", virStorageTypeToString(disk->store->type));
|
|
|
a41c76 |
|
|
|
a41c76 |
+ virBufferEscapeString(&attrBuf, " exportname='%s'", disk->exportname);
|
|
|
a41c76 |
+ virBufferEscapeString(&attrBuf, " exportbitmap='%s'", disk->exportbitmap);
|
|
|
a41c76 |
+
|
|
|
a41c76 |
if (disk->store->format > 0)
|
|
|
a41c76 |
virBufferEscapeString(&childBuf, "<driver type='%s'/>\n",
|
|
|
a41c76 |
virStorageFileFormatTypeToString(disk->store->format));
|
|
|
a41c76 |
diff --git a/src/conf/backup_conf.h b/src/conf/backup_conf.h
|
|
|
a41c76 |
index 7cf44245d4..672fd52ee7 100644
|
|
|
a41c76 |
--- a/src/conf/backup_conf.h
|
|
|
a41c76 |
+++ b/src/conf/backup_conf.h
|
|
|
a41c76 |
@@ -51,6 +51,8 @@ typedef virDomainBackupDiskDef *virDomainBackupDiskDefPtr;
|
|
|
a41c76 |
struct _virDomainBackupDiskDef {
|
|
|
a41c76 |
char *name; /* name matching the
|
|
|
a41c76 |
virTristateBool backup; /* whether backup is requested */
|
|
|
a41c76 |
+ char *exportname; /* name of the NBD export for pull mode backup */
|
|
|
a41c76 |
+ char *exportbitmap; /* name of the bitmap exposed in NBD for pull mode backup */
|
|
|
a41c76 |
|
|
|
a41c76 |
/* details of target for push-mode, or of the scratch file for pull-mode */
|
|
|
a41c76 |
virStorageSourcePtr store;
|
|
|
a41c76 |
diff --git a/tests/domainbackupxml2xmlin/backup-pull-seclabel.xml b/tests/domainbackupxml2xmlin/backup-pull-seclabel.xml
|
|
|
a41c76 |
index a00d8758bb..4e6e602c19 100644
|
|
|
a41c76 |
--- a/tests/domainbackupxml2xmlin/backup-pull-seclabel.xml
|
|
|
a41c76 |
+++ b/tests/domainbackupxml2xmlin/backup-pull-seclabel.xml
|
|
|
a41c76 |
@@ -2,7 +2,7 @@
|
|
|
a41c76 |
<incremental>1525889631</incremental>
|
|
|
a41c76 |
<server transport='tcp' name='localhost' port='10809'/>
|
|
|
a41c76 |
<disks>
|
|
|
a41c76 |
- <disk name='vda' type='file'>
|
|
|
a41c76 |
+ <disk name='vda' type='file' exportname='test-vda' exportbitmap='blah'>
|
|
|
a41c76 |
<driver type='qcow2'/>
|
|
|
a41c76 |
<scratch file='/path/to/file'>
|
|
|
a41c76 |
<seclabel model='dac' relabel='no'/>
|
|
|
a41c76 |
diff --git a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
|
|
|
a41c76 |
index c631c9b979..450f007d3a 100644
|
|
|
a41c76 |
--- a/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
|
|
|
a41c76 |
+++ b/tests/domainbackupxml2xmlout/backup-pull-seclabel.xml
|
|
|
a41c76 |
@@ -2,7 +2,7 @@
|
|
|
a41c76 |
<incremental>1525889631</incremental>
|
|
|
a41c76 |
<server transport='tcp' name='localhost' port='10809'/>
|
|
|
a41c76 |
<disks>
|
|
|
a41c76 |
- <disk name='vda' backup='yes' type='file'>
|
|
|
a41c76 |
+ <disk name='vda' backup='yes' type='file' exportname='test-vda' exportbitmap='blah'>
|
|
|
a41c76 |
<driver type='qcow2'/>
|
|
|
a41c76 |
<scratch file='/path/to/file'>
|
|
|
a41c76 |
<seclabel model='dac' relabel='no'/>
|
|
|
a41c76 |
--
|
|
|
a41c76 |
2.25.0
|
|
|
a41c76 |
|