conf: backup: Allow configuration of names exported via NBD

If users wish to use different name for exported disks or bitmaps
the new fields allow to do so. Additionally they also document the
current settings.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Peter Krempa 2019-12-20 11:37:40 +01:00
parent 69908db0f6
commit 12ccd8d4db
6 changed files with 31 additions and 2 deletions

View File

@ -85,6 +85,15 @@
<dd>Setting this attribute to <code>yes</code>(default) specifies <dd>Setting this attribute to <code>yes</code>(default) specifies
that the disk should take part in the backup and using that the disk should take part in the backup and using
<code>no</code> excludes the disk from the backup.</dd> <code>no</code> excludes the disk from the backup.</dd>
<dt><code>exportname</code></dt>
<dd>Allows modification of the NBD export name for the given disk.
By default equal to disk target.
Valid only for pull mode backups.</dd>
<dt><code>exportbitmap</code></dt>
<dd>Allows modification of the name of the bitmap describing dirty
blocks for an incremental backup exported via NBD export name
for the given disk.
Valid only for pull mode backups.</dd>
<dt><code>type</code></dt> <dt><code>type</code></dt>
<dd>A mandatory attribute to describe the type of the <dd>A mandatory attribute to describe the type of the
disk, except when <code>backup='no'</code> is disk, except when <code>backup='no'</code> is

View File

@ -165,6 +165,14 @@
<attribute name='name'> <attribute name='name'>
<ref name='diskTarget'/> <ref name='diskTarget'/>
</attribute> </attribute>
<optional>
<attribute name='exportname'>
<text/>
</attribute>
<attribute name='exportbitmap'>
<text/>
</attribute>
</optional>
<choice> <choice>
<group> <group>
<attribute name='backup'> <attribute name='backup'>

View File

@ -71,6 +71,8 @@ virDomainBackupDefFree(virDomainBackupDefPtr def)
virDomainBackupDiskDefPtr disk = def->disks + i; virDomainBackupDiskDefPtr disk = def->disks + i;
g_free(disk->name); g_free(disk->name);
g_free(disk->exportname);
g_free(disk->exportbitmap);
virObjectUnref(disk->store); virObjectUnref(disk->store);
} }
@ -124,6 +126,11 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node,
if (def->backup == VIR_TRISTATE_BOOL_NO) if (def->backup == VIR_TRISTATE_BOOL_NO)
return 0; return 0;
if (!push) {
def->exportname = virXMLPropString(node, "exportname");
def->exportbitmap = virXMLPropString(node, "exportbitmap");
}
if (internal) { if (internal) {
if (!(state = virXMLPropString(node, "state")) || if (!(state = virXMLPropString(node, "state")) ||
(tmp = virDomainBackupDiskStateTypeFromString(state)) < 0) { (tmp = virDomainBackupDiskStateTypeFromString(state)) < 0) {
@ -333,6 +340,9 @@ virDomainBackupDiskDefFormat(virBufferPtr buf,
if (disk->backup == VIR_TRISTATE_BOOL_YES) { if (disk->backup == VIR_TRISTATE_BOOL_YES) {
virBufferAsprintf(&attrBuf, " type='%s'", virStorageTypeToString(disk->store->type)); virBufferAsprintf(&attrBuf, " type='%s'", virStorageTypeToString(disk->store->type));
virBufferEscapeString(&attrBuf, " exportname='%s'", disk->exportname);
virBufferEscapeString(&attrBuf, " exportbitmap='%s'", disk->exportbitmap);
if (disk->store->format > 0) if (disk->store->format > 0)
virBufferEscapeString(&childBuf, "<driver type='%s'/>\n", virBufferEscapeString(&childBuf, "<driver type='%s'/>\n",
virStorageFileFormatTypeToString(disk->store->format)); virStorageFileFormatTypeToString(disk->store->format));

View File

@ -51,6 +51,8 @@ typedef virDomainBackupDiskDef *virDomainBackupDiskDefPtr;
struct _virDomainBackupDiskDef { struct _virDomainBackupDiskDef {
char *name; /* name matching the <target dev='...' of the domain */ char *name; /* name matching the <target dev='...' of the domain */
virTristateBool backup; /* whether backup is requested */ virTristateBool backup; /* whether backup is requested */
char *exportname; /* name of the NBD export for pull mode backup */
char *exportbitmap; /* name of the bitmap exposed in NBD for pull mode backup */
/* details of target for push-mode, or of the scratch file for pull-mode */ /* details of target for push-mode, or of the scratch file for pull-mode */
virStorageSourcePtr store; virStorageSourcePtr store;

View File

@ -2,7 +2,7 @@
<incremental>1525889631</incremental> <incremental>1525889631</incremental>
<server transport='tcp' name='localhost' port='10809'/> <server transport='tcp' name='localhost' port='10809'/>
<disks> <disks>
<disk name='vda' type='file'> <disk name='vda' type='file' exportname='test-vda' exportbitmap='blah'>
<driver type='qcow2'/> <driver type='qcow2'/>
<scratch file='/path/to/file'> <scratch file='/path/to/file'>
<seclabel model='dac' relabel='no'/> <seclabel model='dac' relabel='no'/>

View File

@ -2,7 +2,7 @@
<incremental>1525889631</incremental> <incremental>1525889631</incremental>
<server transport='tcp' name='localhost' port='10809'/> <server transport='tcp' name='localhost' port='10809'/>
<disks> <disks>
<disk name='vda' backup='yes' type='file'> <disk name='vda' backup='yes' type='file' exportname='test-vda' exportbitmap='blah'>
<driver type='qcow2'/> <driver type='qcow2'/>
<scratch file='/path/to/file'> <scratch file='/path/to/file'>
<seclabel model='dac' relabel='no'/> <seclabel model='dac' relabel='no'/>