virtio-fs stops responding after pausing and resuming VM

I tried to use the Rust virtiofsd with a VM in libvirt. After pausing and resuming the VM, the virtiofs stops responding, and causes the system to hang. The C virtiofsd that comes with QEMU <8.0 works fine.

The issue will persist across resets, and requires a power cycle of the VM to make virtio-fs back to function.

I use libvirt 8.0, and I have tested both QEMU 6.2 and 8.0, the issue can be reproduced for both.

Reproduction steps:

  • Create a VM with virtiofs device
  • Add a Filesystem device, set <binary path="PATH_TO_RUST_VIRTIOFSD"/>
  • Boot the VM and mount virtiofs
  • virsh suspend vm && virsh resume vm
  • virtiofs stops responding

Some other things that I tried (and neither works)

  • Turning off sandboxing
  • Upgrade dependencies:
    -vhost-user-backend = "0.8.0"
    -vhost = "0.6.0"
    -virtio-bindings = { version = "0.1", features = ["virtio-v5_0_0"] }
    -vm-memory = { version = "0.10.0", features = ["backend-mmap", "backend-atomic"] }
    -virtio-queue = "0.7.0"
    +vhost-user-backend = "0.9.0"
    +vhost = "0.7.0"
    +virtio-bindings = { version = "0.2", features = ["virtio-v5_0_0"] }
    +vm-memory = { version = "0.11.0", features = ["backend-mmap", "backend-atomic"] }
    +virtio-queue = "0.8.0"
Edited by Gary Guo