This doesn't seem very useful at the moment, but it will make
sense once we introduce another HPT-related setting.
The output XML is decoupled from the input XML in preparation
of future changes as well; while doing so, we can shave a few
lines off the latter.
This commit is best viewed with 'git show -w'.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
src/conf/domain_conf.c | 19 ++++++++---
src/qemu/qemu_command.c | 32 ++++++++++---------
tests/qemuxml2argvdata/pseries-features.xml | 14 ++------
tests/qemuxml2xmloutdata/pseries-features.xml | 29 ++++++++++++++++-
4 files changed, 62 insertions(+), 32 deletions(-)
mode change 120000 => 100644 tests/qemuxml2xmloutdata/pseries-features.xml
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 069ff8c2f8..3f7b0d1bfe 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -27258,6 +27258,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
const char *type = NULL;
int n;
size_t i;
+ virBuffer attributeBuf = VIR_BUFFER_INITIALIZER;
virBuffer childrenBuf = VIR_BUFFER_INITIALIZER;
char *netprefix = NULL;
@@ -27773,12 +27774,21 @@ virDomainDefFormatInternal(virDomainDefPtr def,
break;
case VIR_DOMAIN_FEATURE_HPT:
- if (def->features[i] != VIR_TRISTATE_SWITCH_ON ||
- def->hpt_resizing == VIR_DOMAIN_HPT_RESIZING_NONE)
+ if (def->features[i] != VIR_TRISTATE_SWITCH_ON)
break;
- virBufferAsprintf(buf, "<hpt resizing='%s'/>\n",
-
virDomainHPTResizingTypeToString(def->hpt_resizing));
+ virBufferFreeAndReset(&attributeBuf);
+
+ if (def->hpt_resizing != VIR_DOMAIN_HPT_RESIZING_NONE) {
+ virBufferAsprintf(&attributeBuf,
+ " resizing='%s'",
+
virDomainHPTResizingTypeToString(def->hpt_resizing));
+ }
+
+ if (virXMLFormatElement(buf, "hpt",
+ &attributeBuf, NULL) < 0) {
+ goto error;
+ }
break;
/* coverity[dead_error_begin] */
@@ -28040,6 +28050,7 @@ virDomainDefFormatInternal(virDomainDefPtr def,
error:
virBufferFreeAndReset(buf);
virBufferFreeAndReset(&childrenBuf);
+ virBufferFreeAndReset(&attributeBuf);
return -1;
}
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 081314ed0a..5cd6d44a88 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7245,24 +7245,26 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
}
if (def->features[VIR_DOMAIN_FEATURE_HPT] == VIR_TRISTATE_SWITCH_ON) {
- const char *str;
- if (def->hpt_resizing != VIR_DOMAIN_HPT_RESIZING_NONE &&
- !virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT)) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("HTP resizing is not supported by this "
- "QEMU binary"));
- goto cleanup;
- }
+ if (def->hpt_resizing != VIR_DOMAIN_HPT_RESIZING_NONE) {
+ const char *str;
- str = virDomainHPTResizingTypeToString(def->hpt_resizing);
- if (!str) {
- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
- _("Invalid setting for HPT resizing"));
- goto cleanup;
- }
+ if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_MACHINE_PSERIES_RESIZE_HPT)) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("HTP resizing is not supported by this "
+ "QEMU binary"));
+ goto cleanup;
+ }
+
+ str = virDomainHPTResizingTypeToString(def->hpt_resizing);
+ if (!str) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Invalid setting for HPT resizing"));
+ goto cleanup;
+ }
- virBufferAsprintf(&buf, ",resize-hpt=%s", str);
+ virBufferAsprintf(&buf, ",resize-hpt=%s", str);
+ }
}
if (cpu && cpu->model &&
diff --git a/tests/qemuxml2argvdata/pseries-features.xml
b/tests/qemuxml2argvdata/pseries-features.xml
index 5dd0dbd0be..5ef1a744c8 100644
--- a/tests/qemuxml2argvdata/pseries-features.xml
+++ b/tests/qemuxml2argvdata/pseries-features.xml
@@ -2,27 +2,17 @@
<name>guest</name>
<uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
<memory unit='KiB'>524288</memory>
- <currentMemory unit='KiB'>524288</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='ppc64' machine='pseries'>hvm</type>
- <boot dev='hd'/>
</os>
<features>
<hpt resizing='required'/>
</features>
- <clock offset='utc'/>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-ppc64</emulator>
- <controller type='usb' index='0' model='none'/>
- <controller type='pci' index='0' model='pci-root'>
- <model name='spapr-pci-host-bridge'/>
- <target index='0'/>
- </controller>
+ <controller type='pci' model='pci-root'/>
+ <controller type='usb' model='none'/>
<memballoon model='none'/>
- <panic model='pseries'/>
</devices>
</domain>
diff --git a/tests/qemuxml2xmloutdata/pseries-features.xml
b/tests/qemuxml2xmloutdata/pseries-features.xml
deleted file mode 120000
index 1b01dbace6..0000000000
--- a/tests/qemuxml2xmloutdata/pseries-features.xml
+++ /dev/null
@@ -1 +0,0 @@
-../qemuxml2argvdata/pseries-features.xml
\ No newline at end of file
diff --git a/tests/qemuxml2xmloutdata/pseries-features.xml
b/tests/qemuxml2xmloutdata/pseries-features.xml
new file mode 100644
index 0000000000..e8ed842fb6
--- /dev/null
+++ b/tests/qemuxml2xmloutdata/pseries-features.xml
@@ -0,0 +1,28 @@
+<domain type='qemu'>
+ <name>guest</name>
+ <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+ <memory unit='KiB'>524288</memory>
+ <currentMemory unit='KiB'>524288</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='ppc64' machine='pseries'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <hpt resizing='required'/>
+ </features>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <controller type='pci' index='0' model='pci-root'>
+ <model name='spapr-pci-host-bridge'/>
+ <target index='0'/>
+ </controller>
+ <controller type='usb' index='0' model='none'/>
+ <memballoon model='none'/>
+ <panic model='pseries'/>
+ </devices>
+</domain>
--
2.17.1