[pve-devel] [PATCH cluster/guest-common/qemu-server/manager v6 0/11] virtiofs

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Jul 19 14:08:53 CEST 2023


high level:

- some indication for which patches require which patches and/or package
  relation bumps would be nice (e.g., qemu-server -> pve-guest-common
  and pve-manager -> pve-doc-generator)
- the qemu-server unit tests fail for me with the patches, but work
  without. they do work when run as root, so I assume some mocking for
  pmxcfs related things is missing

if I start a VM with `qm start`:

Jul 19 13:57:48 yuna qm[3872900]: <root at pam> starting task UPID:yuna:003B1897:0127A0F1:64B7CFBC:qmstart:901:root at pam:
Jul 19 13:57:48 yuna qm[3872919]: start VM 901: UPID:yuna:003B1897:0127A0F1:64B7CFBC:qmstart:901:root at pam:
Jul 19 13:57:48 yuna systemd[1]: Started 901.scope.
Jul 19 13:57:48 yuna kernel: device tap901i0 entered promiscuous mode
Jul 19 13:57:48 yuna kernel: vmbr10: port 2(tap901i0) entered blocking state
Jul 19 13:57:48 yuna kernel: vmbr10: port 2(tap901i0) entered disabled state
Jul 19 13:57:48 yuna kernel: vmbr10: port 2(tap901i0) entered blocking state
Jul 19 13:57:48 yuna kernel: vmbr10: port 2(tap901i0) entered listening state
Jul 19 13:57:48 yuna QEMU[3872940]: kvm: Unexpected end-of-file before all data were read
Jul 19 13:57:48 yuna qm[3872923]: command '/usr/libexec/virtiofsd '--fd=9' '--shared-dir=/var/lib/apt'' failed: received interrupt
Jul 19 13:57:48 yuna qm[3872900]: <root at pam> end task UPID:yuna:003B1897:0127A0F1:64B7CFBC:qmstart:901:root at pam: OK
Jul 19 13:57:48 yuna sudo[3872855]: pam_unix(sudo:session): session closed for user root
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Failed to set msg fds.
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: vhost_set_vring_call failed 22
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Failed to set msg fds.
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: vhost_set_vring_call failed 22
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Failed to set msg fds.
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: vhost_set_features failed: Invalid argument (22)
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Error starting vhost: 22
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Failed to set msg fds.
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: vhost_set_vring_call failed 22
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: Failed to set msg fds.
Jul 19 13:57:59 yuna QEMU[3872940]: kvm: vhost_set_vring_call failed 22

$ qm start 901
[2023-07-19T11:57:48Z INFO  virtiofsd] Waiting for vhost-user socket connection...
[2023-07-19T11:57:48Z INFO  virtiofsd] Client connected, servicing requests

with only the qemu process in the systemd scope for that VM..

if I start via the API, the above issue goes away, but as noted by
Friedrich, the virtiofsd process is not part of the VM scope, but a
child of the start task, and lingers after the VM has been stopped.

On July 6, 2023 12:54 pm, Markus Frank wrote:
> cluster:
> 
> Markus Frank (1):
>   add mapping/dir.cfg for resource mapping
> 
>  src/PVE/Cluster.pm  | 1 +
>  src/pmxcfs/status.c | 1 +
>  2 files changed, 2 insertions(+)
> 
> 
> guest-common:
> 
> Markus Frank (1):
>   add DIR mapping config
> 
>  src/Makefile           |   1 +
>  src/PVE/Mapping/DIR.pm | 175 +++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 176 insertions(+)
>  create mode 100644 src/PVE/Mapping/DIR.pm
> 
> 
> qemu-server:
> 
> v6:
>  * added virtiofsd dependency
>  * 2 new patches:
>     * Permission check for virtiofs directory access
>     * check_local_resources: virtiofs
> 
> v5:
>  * allow numa settings with virtio-fs
>  * added direct-io & cache settings
>  * changed to rust implementation of virtiofsd
>  * made double fork and closed all file descriptor so that the lockfile
>  gets released.
> 
> v3:
>  * created own socket and get file descriptor for virtiofsd
>  so there is no race between starting virtiofsd & qemu
>  * added TODO to replace virtiofsd with rust implementation in bookworm
>  (I packaged the rust implementation for bookworm & the C implementation
>  in qemu will be removed in qemu 8.0)
> 
> v2:
>  * replaced sharedfiles_fmt path in qemu-server with dirid:
>  * user can use the dirid to specify the directory without requiring root access
> 
> Markus Frank (3):
>   feature #1027: virtio-fs support
>   Permission check for virtiofs directory access
>   check_local_resources: virtiofs
> 
>  PVE/API2/Qemu.pm         |  18 +++++
>  PVE/QemuServer.pm        | 167 ++++++++++++++++++++++++++++++++++++++-
>  PVE/QemuServer/Memory.pm |  25 ++++--
>  debian/control           |   1 +
>  4 files changed, 204 insertions(+), 7 deletions(-)
> 
> 
> manager:
> 
> v6: completly new except "ui: added options to add virtio-fs to qemu config"
> 
> Markus Frank (5):
>   api: add resource map api endpoints for directories
>   ui: add edit window for dir mappings
>   ui: ResourceMapTree for DIR
>   ui: form: add DIRMapSelector
>   ui: added options to add virtio-fs to qemu config
> 
>  PVE/API2/Cluster/Mapping.pm         |   7 +
>  PVE/API2/Cluster/Mapping/DIR.pm     | 299 ++++++++++++++++++++++++++++
>  PVE/API2/Cluster/Mapping/Makefile   |   3 +-
>  www/manager6/Makefile               |   4 +
>  www/manager6/Utils.js               |   1 +
>  www/manager6/dc/Config.js           |  10 +
>  www/manager6/dc/DIRMapView.js       |  50 +++++
>  www/manager6/form/DIRMapSelector.js |  63 ++++++
>  www/manager6/qemu/HardwareView.js   |  19 ++
>  www/manager6/qemu/VirtiofsEdit.js   | 120 +++++++++++
>  www/manager6/window/DIRMapEdit.js   | 186 +++++++++++++++++
>  11 files changed, 761 insertions(+), 1 deletion(-)
>  create mode 100644 PVE/API2/Cluster/Mapping/DIR.pm
>  create mode 100644 www/manager6/dc/DIRMapView.js
>  create mode 100644 www/manager6/form/DIRMapSelector.js
>  create mode 100644 www/manager6/qemu/VirtiofsEdit.js
>  create mode 100644 www/manager6/window/DIRMapEdit.js
> 
> -- 
> 2.39.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 





More information about the pve-devel mailing list