Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

File sharing over virtio-9p


The following two patches enables a NetBSD guest running
on a Linux KVM to share files with its host over virtio-9p.

The first patch exports a 9p endpoint of virtio-9p via a character
device (e.g., /dev/vio9p0) and the second one extends mount_9p
(puffs) to talk with a 9p server inside qemu via the character device.


Export a directory of a host via virtio-9p.  The below XML is part of
a libvirt domain configuration.  It exports "/var/lib/libvirt/export"
directory with a tag "test".  If it is the first entry, it will have
minor number 0 and /dev/vio9p0 is assigned to it typically.

    <filesystem type='mount' accessmode='mapped'>
      <source dir='/var/lib/libvirt/export'/>
      <target dir='test'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'

A boot log of vio9p looks like this:

    virtio0 at pci0 dev 3 function 0
    virtio0: Virtio 9P Transport Device (rev. 0x00)
    vio9p0 at virtio0: Features: 0x10000000<INDIRECT_DESC>
    virtio0: allocated 12288 byte for virtqueue 0 for vio9p, size 128
    virtio0: using 4096 byte (256 entries) indirect descriptors
    vio9p0: tagged as test
    virtio0: interrupting at ioapic0 pin 11

A NetBSD guest can mount the exported directory with mount_9p.

    mount_9p -cu /dev/vio9p0 /mnt/9p

-c tells mount_9p to interpret the first argument as a character
device file to talk with.

Have fun,

Home | Main Index | Thread Index | Old Index