[libvirt PATCHv2 04/10] conf: qemu: add virtiofs fsdriver type
Peter Krempa
pkrempa at redhat.com
Fri Jan 24 08:00:04 UTC 2020
On Thu, Jan 23, 2020 at 18:46:05 +0100, Ján Tomko wrote:
> Introduce a new 'virtiofs' driver type for filesystem.
>
> <filesystem type='mount' accessmode='passthrough'>
> <driver type='virtiofs'/>
> <source dir='/path'/>
> <target dir='mount_tag'>
> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
> </filesystem>
>
> Signed-off-by: Ján Tomko <jtomko at redhat.com>
> ---
> docs/formatdomain.html.in | 7 ++
> docs/schemas/domaincommon.rng | 16 ++++
> src/conf/domain_conf.c | 1 +
> src/conf/domain_conf.h | 1 +
> src/qemu/qemu_command.c | 4 +
> src/qemu/qemu_domain.c | 4 +
> src/qemu/qemu_domain_address.c | 4 +
> .../vhost-user-fs-fd-memory.xml | 38 ++++++++++
> .../vhost-user-fs-hugepages.xml | 73 +++++++++++++++++++
> .../vhost-user-fs-fd-memory.x86_64-latest.xml | 1 +
> .../vhost-user-fs-hugepages.x86_64-latest.xml | 1 +
> tests/qemuxml2xmltest.c | 3 +
> 12 files changed, 153 insertions(+)
> create mode 100644 tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
> create mode 100644 tests/qemuxml2argvdata/vhost-user-fs-hugepages.xml
> create mode 120000 tests/qemuxml2xmloutdata/vhost-user-fs-fd-memory.x86_64-latest.xml
> create mode 120000 tests/qemuxml2xmloutdata/vhost-user-fs-hugepages.x86_64-latest.xml
>
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 4db9c292b7..21f2a92ed6 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -3921,6 +3921,11 @@
> <target dir='/import/from/host'/>
> <readonly/>
> </filesystem>
> + <filesystem type='mount' accessmode='passthrough'>
> + <driver type='virtiofs'/>
> + <source dir='/path'/>
> + <target dir='mount_tag'>
> + </filesystem>
> ...
> </devices>
> ...</pre>
> @@ -3949,6 +3954,8 @@
> while the value <code>immediate</code> means that a host writeback
> is immediately triggered for all pages touched during a guest file
> write operation <span class="since">(since 0.9.10)</span>.
> + <span class="since">Since 6.1.0</span>, <code>type='virtiofs'</code>
> + is also supported.
I'd expect some more description on the topic of virtiofs. Not even the
knowledge-base article is crosslinked from here.
Specifically what does 'mount_tag' mean and perhaps how to use it in the
guest.
The validator then forces accessmode to passthrough and that is not
mentioned here either.
> </dd>
> <dt><code>template</code></dt>
> <dd>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 04854bf816..66757d3b63 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -2625,6 +2625,22 @@
> </optional>
> <ref name='virtioOptions'/>
> </group>
> + <group>
> + <attribute name="type">
> + <value>virtiofs</value>
> + </attribute>
> + <optional>
> + <attribute name="format">
> + <ref name="storageFormat"/>
> + </attribute>
The format attribute isn't documented and is rejected by the validator.
Why bother adding it to the schema?
> + </optional>
> + <optional>
> + <attribute name="wrpolicy">
> + <value>immediate</value>
> + </attribute>
This doesn't seem to be documented either.
> + </optional>
> + <ref name='virtioOptions'/>
> + </group>
> <empty/>
> </choice>
> </element>
[...]
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index c66b60fd21..974c2b79af 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -2687,6 +2687,10 @@ qemuBuildFilesystemCommandLine(virCommandPtr cmd,
> return -1;
> break;
>
> + case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
> + /* TODO: vhost-user-fs-pci */
> + break;
IMO in these cases we should still fall through to error reporting
rather than format nothing but you don't have to change it.
> +
> case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
> case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
> case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 38addc7b61..eb8e82b545 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -8275,6 +8275,10 @@ qemuDomainDeviceDefValidateFS(virDomainFSDefPtr fs,
> _("Filesystem driver type not supported"));
> return -1;
>
> + case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
> + /* TODO: vhost-user-fs-pci */
> + return 0;
> +
> case VIR_DOMAIN_FS_DRIVER_TYPE_LAST:
> default:
> virReportEnumRangeError(virDomainFSDriverType, fs->fsdriver);
> diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c
> index 9e3bcc434d..3c6ac62ff5 100644
> --- a/src/qemu/qemu_domain_address.c
> +++ b/src/qemu/qemu_domain_address.c
> @@ -690,6 +690,10 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
> }
> break;
>
> + case VIR_DOMAIN_FS_DRIVER_TYPE_VIRTIOFS:
> + /* vhost-user-fs-pci */
> + return virtioFlags;
> +
> case VIR_DOMAIN_FS_DRIVER_TYPE_LOOP:
> case VIR_DOMAIN_FS_DRIVER_TYPE_NBD:
> case VIR_DOMAIN_FS_DRIVER_TYPE_PLOOP:
> diff --git a/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
> new file mode 100644
> index 0000000000..b02eb5cb2b
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/vhost-user-fs-fd-memory.xml
> @@ -0,0 +1,38 @@
> +<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>
> + <numa>
> + <cell id='0' cpus='0-1' memory='14680064' unit='KiB' memAccess='shared'/>
> + </numa>
This is possibly worth mentioning too. Especially if you don't
cross-link to the knowledge-base in patch 10.
The rest looks good. I'm willing to review just the improved
documentation if you reply with the changes.
More information about the libvir-list
mailing list