diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 22b58e3212..f7b86be5fc 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -27570,7 +27570,7 @@ virDomainCpuDefFormat(virBuffer *buf,
static bool
-virDomainDefIothreadShouldFormat(virDomainDef *def)
+virDomainDefIothreadShouldFormat(const virDomainDef *def)
{
size_t i;
@@ -27583,6 +27583,31 @@ virDomainDefIothreadShouldFormat(virDomainDef *def)
}
+static void
+virDomainDefIOThreadsFormat(virBuffer *buf,
+ const virDomainDef *def)
+{
+ g_auto(virBuffer) childrenBuf = VIR_BUFFER_INIT_CHILD(buf);
+ size_t i;
+
+ if (def->niothreadids == 0)
+ return;
+
+ virBufferAsprintf(buf, "%zu\n",
+ def->niothreadids);
+
+ if (!virDomainDefIothreadShouldFormat(def))
+ return;
+
+ for (i = 0; i < def->niothreadids; i++) {
+ virBufferAsprintf(&childrenBuf, "\n",
+ def->iothreadids[i]->iothread_id);
+ }
+
+ virXMLFormatElement(buf, "iothreadids", NULL, &childrenBuf);
+}
+
+
static void
virDomainIOMMUDefFormat(virBuffer *buf,
const virDomainIOMMUDef *iommu)
@@ -28228,20 +28253,7 @@ virDomainDefFormatInternalSetRootName(virDomainDef *def,
if (virDomainCpuDefFormat(buf, def) < 0)
return -1;
- if (def->niothreadids > 0) {
- virBufferAsprintf(buf, "%zu\n",
- def->niothreadids);
- if (virDomainDefIothreadShouldFormat(def)) {
- virBufferAddLit(buf, "\n");
- virBufferAdjustIndent(buf, 2);
- for (i = 0; i < def->niothreadids; i++) {
- virBufferAsprintf(buf, "\n",
- def->iothreadids[i]->iothread_id);
- }
- virBufferAdjustIndent(buf, -2);
- virBufferAddLit(buf, "\n");
- }
- }
+ virDomainDefIOThreadsFormat(buf, def);
if (virDomainCputuneDefFormat(buf, def, flags) < 0)
return -1;