mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
conf: virtiofs: add thread_pool element
Add an element to configure the thread pool size: ... <binary> <thread_pool size='16'/> </binary> ... https://bugzilla.redhat.com/show_bug.cgi?id=2072905 Signed-off-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
261f106100
commit
0df2e7df80
@ -3367,6 +3367,7 @@ A directory on the host that can be accessed directly from the guest.
|
|||||||
<cache mode='always'/>
|
<cache mode='always'/>
|
||||||
<sandbox mode='namespace'/>
|
<sandbox mode='namespace'/>
|
||||||
<lock posix='on' flock='on'/>
|
<lock posix='on' flock='on'/>
|
||||||
|
<thread_pool size='16'/>
|
||||||
</binary>
|
</binary>
|
||||||
<source dir='/path'/>
|
<source dir='/path'/>
|
||||||
<target dir='mount_tag'/>
|
<target dir='mount_tag'/>
|
||||||
@ -3500,6 +3501,11 @@ A directory on the host that can be accessed directly from the guest.
|
|||||||
``chroot``, see the
|
``chroot``, see the
|
||||||
`virtiofsd documentation <https://qemu.readthedocs.io/en/latest/tools/virtiofsd.html>`__
|
`virtiofsd documentation <https://qemu.readthedocs.io/en/latest/tools/virtiofsd.html>`__
|
||||||
for more details. ( :since:`Since 7.2.0` )
|
for more details. ( :since:`Since 7.2.0` )
|
||||||
|
Element ``thread_pool`` accepts one attribute ``size`` which defines the
|
||||||
|
maximum thread pool size. A value of "0" disables the pool.
|
||||||
|
The thread pool helps increase the number of requests in flight when used with
|
||||||
|
storage that has a higher latency. However, it has an overhead, and so for
|
||||||
|
fast, low latency filesystems, it may be best to turn it off. ( :since:`Since 8.5.0` )
|
||||||
``source``
|
``source``
|
||||||
The resource on the host that is being accessed in the guest. The ``name``
|
The resource on the host that is being accessed in the guest. The ``name``
|
||||||
attribute must be used with ``type='template'``, and the ``dir`` attribute
|
attribute must be used with ``type='template'``, and the ``dir`` attribute
|
||||||
|
@ -2472,6 +2472,8 @@ virDomainFSDefNew(virDomainXMLOption *xmlopt)
|
|||||||
|
|
||||||
ret->src = virStorageSourceNew();
|
ret->src = virStorageSourceNew();
|
||||||
|
|
||||||
|
ret->thread_pool_size = -1;
|
||||||
|
|
||||||
if (xmlopt &&
|
if (xmlopt &&
|
||||||
xmlopt->privateData.fsNew &&
|
xmlopt->privateData.fsNew &&
|
||||||
!(ret->privateData = xmlopt->privateData.fsNew()))
|
!(ret->privateData = xmlopt->privateData.fsNew()))
|
||||||
@ -9910,6 +9912,7 @@ virDomainFSDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
if (def->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) {
|
if (def->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) {
|
||||||
g_autofree char *queue_size = virXPathString("string(./driver/@queue)", ctxt);
|
g_autofree char *queue_size = virXPathString("string(./driver/@queue)", ctxt);
|
||||||
g_autofree char *binary = virXPathString("string(./binary/@path)", ctxt);
|
g_autofree char *binary = virXPathString("string(./binary/@path)", ctxt);
|
||||||
|
g_autofree char *thread_pool_size = virXPathString("string(./binary/thread_pool/@size)", ctxt);
|
||||||
xmlNodePtr binary_node = virXPathNode("./binary", ctxt);
|
xmlNodePtr binary_node = virXPathNode("./binary", ctxt);
|
||||||
xmlNodePtr binary_lock_node = virXPathNode("./binary/lock", ctxt);
|
xmlNodePtr binary_lock_node = virXPathNode("./binary/lock", ctxt);
|
||||||
xmlNodePtr binary_cache_node = virXPathNode("./binary/cache", ctxt);
|
xmlNodePtr binary_cache_node = virXPathNode("./binary/cache", ctxt);
|
||||||
@ -9922,6 +9925,14 @@ virDomainFSDefParseXML(virDomainXMLOption *xmlopt,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (thread_pool_size &&
|
||||||
|
virStrToLong_i(thread_pool_size, NULL, 10, &def->thread_pool_size) < 0) {
|
||||||
|
virReportError(VIR_ERR_XML_ERROR,
|
||||||
|
_("cannot parse thread pool size '%s' for virtiofs"),
|
||||||
|
queue_size);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
if (binary)
|
if (binary)
|
||||||
def->binary = virFileSanitizePath(binary);
|
def->binary = virFileSanitizePath(binary);
|
||||||
|
|
||||||
@ -24258,6 +24269,10 @@ virDomainFSDefFormat(virBuffer *buf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
virXMLFormatElement(&binaryBuf, "lock", &lockAttrBuf, NULL);
|
virXMLFormatElement(&binaryBuf, "lock", &lockAttrBuf, NULL);
|
||||||
|
|
||||||
|
if (def->thread_pool_size >= 0)
|
||||||
|
virBufferAsprintf(&binaryBuf, "<thread_pool size='%d'/>\n", def->thread_pool_size);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
virDomainVirtioOptionsFormat(&driverAttrBuf, def->virtio);
|
virDomainVirtioOptionsFormat(&driverAttrBuf, def->virtio);
|
||||||
|
@ -905,6 +905,7 @@ struct _virDomainFSDef {
|
|||||||
virTristateSwitch posix_lock;
|
virTristateSwitch posix_lock;
|
||||||
virTristateSwitch flock;
|
virTristateSwitch flock;
|
||||||
virDomainFSSandboxMode sandbox;
|
virDomainFSSandboxMode sandbox;
|
||||||
|
int thread_pool_size;
|
||||||
virDomainVirtioOptions *virtio;
|
virDomainVirtioOptions *virtio;
|
||||||
virObject *privateData;
|
virObject *privateData;
|
||||||
};
|
};
|
||||||
|
@ -3137,6 +3137,15 @@
|
|||||||
</optional>
|
</optional>
|
||||||
</element>
|
</element>
|
||||||
</optional>
|
</optional>
|
||||||
|
<optional>
|
||||||
|
<element name="thread_pool">
|
||||||
|
<optional>
|
||||||
|
<attribute name="size">
|
||||||
|
<data type="integer"/>
|
||||||
|
</attribute>
|
||||||
|
</optional>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
</interleave>
|
</interleave>
|
||||||
</element>
|
</element>
|
||||||
</define>
|
</define>
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
<cache mode='always'/>
|
<cache mode='always'/>
|
||||||
<sandbox mode='chroot'/>
|
<sandbox mode='chroot'/>
|
||||||
<lock posix='off' flock='off'/>
|
<lock posix='off' flock='off'/>
|
||||||
|
<thread_pool size='16'/>
|
||||||
</binary>
|
</binary>
|
||||||
<source dir='/path'/>
|
<source dir='/path'/>
|
||||||
<target dir='mount_tag'/>
|
<target dir='mount_tag'/>
|
||||||
|
Loading…
Reference in New Issue
Block a user