mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00: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'/>
|
||||
<sandbox mode='namespace'/>
|
||||
<lock posix='on' flock='on'/>
|
||||
<thread_pool size='16'/>
|
||||
</binary>
|
||||
<source dir='/path'/>
|
||||
<target dir='mount_tag'/>
|
||||
@ -3500,6 +3501,11 @@ A directory on the host that can be accessed directly from the guest.
|
||||
``chroot``, see the
|
||||
`virtiofsd documentation <https://qemu.readthedocs.io/en/latest/tools/virtiofsd.html>`__
|
||||
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``
|
||||
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
|
||||
|
@ -2472,6 +2472,8 @@ virDomainFSDefNew(virDomainXMLOption *xmlopt)
|
||||
|
||||
ret->src = virStorageSourceNew();
|
||||
|
||||
ret->thread_pool_size = -1;
|
||||
|
||||
if (xmlopt &&
|
||||
xmlopt->privateData.fsNew &&
|
||||
!(ret->privateData = xmlopt->privateData.fsNew()))
|
||||
@ -9910,6 +9912,7 @@ virDomainFSDefParseXML(virDomainXMLOption *xmlopt,
|
||||
if (def->fsdriver == VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS) {
|
||||
g_autofree char *queue_size = virXPathString("string(./driver/@queue)", 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_lock_node = virXPathNode("./binary/lock", ctxt);
|
||||
xmlNodePtr binary_cache_node = virXPathNode("./binary/cache", ctxt);
|
||||
@ -9922,6 +9925,14 @@ virDomainFSDefParseXML(virDomainXMLOption *xmlopt,
|
||||
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)
|
||||
def->binary = virFileSanitizePath(binary);
|
||||
|
||||
@ -24258,6 +24269,10 @@ virDomainFSDefFormat(virBuffer *buf,
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -905,6 +905,7 @@ struct _virDomainFSDef {
|
||||
virTristateSwitch posix_lock;
|
||||
virTristateSwitch flock;
|
||||
virDomainFSSandboxMode sandbox;
|
||||
int thread_pool_size;
|
||||
virDomainVirtioOptions *virtio;
|
||||
virObject *privateData;
|
||||
};
|
||||
|
@ -3137,6 +3137,15 @@
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
<element name="thread_pool">
|
||||
<optional>
|
||||
<attribute name="size">
|
||||
<data type="integer"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
</interleave>
|
||||
</element>
|
||||
</define>
|
||||
|
@ -32,6 +32,7 @@
|
||||
<cache mode='always'/>
|
||||
<sandbox mode='chroot'/>
|
||||
<lock posix='off' flock='off'/>
|
||||
<thread_pool size='16'/>
|
||||
</binary>
|
||||
<source dir='/path'/>
|
||||
<target dir='mount_tag'/>
|
||||
|
Loading…
Reference in New Issue
Block a user