mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
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:
parent
69908db0f6
commit
12ccd8d4db
@ -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
|
||||||
|
@ -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'>
|
||||||
|
@ -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));
|
||||||
|
@ -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;
|
||||||
|
@ -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'/>
|
||||||
|
@ -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'/>
|
||||||
|
Loading…
Reference in New Issue
Block a user