id = 2341 title = "IVSHMEM device doesn't work for sharing memory with virtiofsd" state = "opened" created_at = "2024-05-09T19:56:49.929Z" closed_at = "n/a" labels = ["device:virtio", "workflow::Needs Info"] url = "https://gitlab.com/qemu-project/qemu/-/issues/2341" host-os = "Fedora 40" host-arch = "x86" qemu-version = "QEMU emulator version 9.0.50 (v9.0.0-586-g36fa7c686e)" guest-os = "Any Linux (here Ubuntu 24.04)" guest-arch = "x86" description = """Trying to share a folder on the host to the guest with `virtiofsd` using the `ivshmem-plain` device doesn't work (for memory sharing), while using a NUMA node (with `-numa node,memdev=mem`) works just fine.""" reproduce = """1. Install `virtiofsd` 2. Run `/usr/libexec/virtiofsd --socket-path=/tmp/vhostqemu --shared-dir=$HOME --cache always` as a regular user (or with another shared directory, it doesn't matter) 3. Run QEMU with the aforementioned command line as a regular user 4. Wait a bit for the OS to load and `virtiofsd` should error out""" additional = """`virtiofsd` logs: ``` [2024-05-09T19:49:15Z WARN virtiofsd::sandbox] Couldn't set the process uid as root: -1 [2024-05-09T19:49:15Z WARN virtiofsd::sandbox] Couldn't set the process gid as root: -1 [2024-05-09T19:49:15Z INFO virtiofsd] Waiting for vhost-user socket connection... [2024-05-09T19:49:16Z INFO virtiofsd] Client connected, servicing requests [2024-05-09T19:49:22Z ERROR virtiofsd] Waiting for daemon failed: HandleRequest(ReqHandlerError(Custom { kind: Other, error: MissingMemoryMapping })) ``` QEMU logs (after virtiofsd errors out and exits): ``` qemu: Failed to read msg header. Read -1 instead of 12. Original request 0. qemu: Failed to write msg. Wrote -1 instead of 20. qemu: vhost VQ 1 ring restore failed: -22: Invalid argument (22) qemu: Failed to set msg fds. qemu: vhost VQ 0 ring restore failed: -22: Invalid argument (22) qemu: Error starting vhost: 5 qemu: Failed to set msg fds. qemu: vhost_set_vring_call failed 22 qemu: Failed to set msg fds. qemu: vhost_set_vring_call failed 22 qemu: Unexpected end-of-file before all data were read ```"""