src/qemu/qemu_validate.c | 6 +++ ...st-user-fs-sock-readonly.x86_64-latest.err | 1 + .../vhost-user-fs-sock-readonly.xml | 41 +++++++++++++++++++ tests/qemuxmlconftest.c | 1 + 4 files changed, 49 insertions(+) create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml
From: Ján Tomko <jtomko@redhat.com>
In that case, libvirtd cannot set it on the command line because
virtiofsd is not launched by libvirt.
https://issues.redhat.com/browse/RHEL-87522
Signed-off-by: Ján Tomko <jtomko@redhat.com>
---
src/qemu/qemu_validate.c | 6 +++
...st-user-fs-sock-readonly.x86_64-latest.err | 1 +
.../vhost-user-fs-sock-readonly.xml | 41 +++++++++++++++++++
tests/qemuxmlconftest.c | 1 +
4 files changed, 49 insertions(+)
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err
create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 3e8fdb2268..3b0f2b50a5 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -5022,6 +5022,12 @@ qemuValidateDomainDeviceDefFS(virDomainFSDef *fs,
_("virtiofs does not support wrpolicy"));
return -1;
}
+ } else {
+ if (fs->readonly) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("readonly mode cannot be set for externally started virtiofsd"));
+ return -1;
+ }
}
if (fs->model != VIR_DOMAIN_FS_MODEL_DEFAULT) {
diff --git a/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err b/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err
new file mode 100644
index 0000000000..d6df9bddb8
--- /dev/null
+++ b/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err
@@ -0,0 +1 @@
+unsupported configuration: readonly mode cannot be set for externally started virtiofsd
diff --git a/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml b/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml
new file mode 100644
index 0000000000..39e27ccfba
--- /dev/null
+++ b/tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml
@@ -0,0 +1,41 @@
+<domain type='kvm'>
+ <name>guest</name>
+ <uuid>126f2720-6f8e-45ab-a886-ec9277079a67</uuid>
+ <memory unit='KiB'>14680064</memory>
+ <currentMemory unit='KiB'>14680064</currentMemory>
+ <memoryBacking>
+ <source type='file'/>
+ <access mode='shared'/>
+ </memoryBacking>
+ <vcpu placement='static'>2</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <cpu mode='custom' match='exact' check='none'>
+ <model fallback='forbid'>qemu64</model>
+ <numa>
+ <cell id='0' cpus='0-1' memory='14680064' unit='KiB' memAccess='shared'/>
+ </numa>
+ </cpu>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-x86_64</emulator>
+ <controller type='usb' index='0' model='none'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <filesystem type='mount'>
+ <driver type='virtiofs' queue='1024'/>
+ <source socket='/tmp/sock'/>
+ <target dir='tag'/>
+ <readonly/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </filesystem>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <audio id='1' type='none'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
index e4d80faa99..1f39779d7b 100644
--- a/tests/qemuxmlconftest.c
+++ b/tests/qemuxmlconftest.c
@@ -3259,6 +3259,7 @@ mymain(void)
DO_TEST_CAPS_LATEST("seclabel-dynamic-none");
DO_TEST_CAPS_LATEST("serial-target-port-auto");
DO_TEST_CAPS_LATEST("vhost-user-fs-sock");
+ DO_TEST_CAPS_LATEST_PARSE_ERROR("vhost-user-fs-sock-readonly");
DO_TEST_CAPS_ARCH_LATEST("video-virtio-gpu-ccw-auto", "s390x");
DO_TEST_CAPS_LATEST("graphics-listen-network");
--
2.50.1
On 10/21/25 15:10, Ján Tomko via Devel wrote:
> From: Ján Tomko <jtomko@redhat.com>
>
> In that case, libvirtd cannot set it on the command line because
> virtiofsd is not launched by libvirt.
>
> https://issues.redhat.com/browse/RHEL-87522
>
> Signed-off-by: Ján Tomko <jtomko@redhat.com>
> ---
> src/qemu/qemu_validate.c | 6 +++
> ...st-user-fs-sock-readonly.x86_64-latest.err | 1 +
> .../vhost-user-fs-sock-readonly.xml | 41 +++++++++++++++++++
> tests/qemuxmlconftest.c | 1 +
> 4 files changed, 49 insertions(+)
> create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.x86_64-latest.err
> create mode 100644 tests/qemuxmlconfdata/vhost-user-fs-sock-readonly.xml
>
> diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
> index 3e8fdb2268..3b0f2b50a5 100644
> --- a/src/qemu/qemu_validate.c
> +++ b/src/qemu/qemu_validate.c
> @@ -5022,6 +5022,12 @@ qemuValidateDomainDeviceDefFS(virDomainFSDef *fs,
> _("virtiofs does not support wrpolicy"));
> return -1;
> }
> + } else {
> + if (fs->readonly) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("readonly mode cannot be set for externally started virtiofsd"));
> + return -1;
> + }
I think there's more to be checked (e.g. fs->cache, fs->sandbox,
fs->xattr, etc.), but this is a good start.
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Michal
© 2016 - 2025 Red Hat, Inc.