The goal of VirtFS is to implement a virtual filesystem to share files between Host and guest Operating systems. VirtFS is a new paravirtualized filesystem interface designed for improving passthrough technologies in the KVM environment. It’s a virtualization aware filesystem Which offers paravirtualized system services using a simple pass through for directories from host to guest. It is based on the VirtIO framework and uses the 9P protocol.
The project includes :
- The design and implementation of a POSIX-compliant FreeBSD Filesystem driver which is common to all platforms. (Upper)
- The design and implementation of a transport driver using VIRTIO infrastructure and 9p protocol to transfer fileops commands to Host and vice versa. (Lower)
The lower half is the virtio driver. For reference look at a similar driver like a virtio_block. This uses the virtio infrastructure for transferring file ops using shared memory buffer. The upper half is the actual VirtFS driver interacting with the VFS on top (like any other FreeBSD FS) and the lower virtio driver. The 2 new components (modules here) are going to be communicating with each other with an API which has the semantics of p9_client* .This API is exposed to the FS and the Fileops call into this API to perform functions. The driver virtio communicates with the host using the virtio infra provided by the base OS FreeBSD here.
There is code that has been released at: https://github.com/Juniper/virtfs.