Switch to 'mapped' access mode for hostfs
authorReto Buerki <reet@codelabs.ch>
Wed, 16 Jan 2013 10:58:01 +0000 (11:58 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 17 Jan 2013 15:55:04 +0000 (16:55 +0100)
Passthrough mode only works as expected when running as root. On
Debian/Ubuntu systems qemu runs as user 'libvirt-qemu' and group 'kvm'
so all shared files must be chowned to grant access from guests.

Symlinks created on the host are still problematic because the Plan 9
filesystem has no direct notion of symbolic links, see [1].

[1] - http://ericvh.github.com/9p-rfc/rfc9p2000.u.html

14 files changed:
testing/config/kvm/alice.xml
testing/config/kvm/bob.xml
testing/config/kvm/carol.xml
testing/config/kvm/dave.xml
testing/config/kvm/moon.xml
testing/config/kvm/sun.xml
testing/config/kvm/venus.xml
testing/config/kvm/winnetou.xml
testing/hosts/default/etc/fstab
testing/make-testing
testing/scripts/build-guestkernel
testing/scripts/build-rootimage
testing/start-testing
testing/testing.conf

index 21683b8..6ca78f8 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index e112008..d9a9b4c 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index 3bd66f1..fbdabe2 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index 526df28..bfebe9b 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index 0492993..e019fce 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index e601298..5ed1a47 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index bd00aa5..77a3336 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index a23b248..99d5deb 100644 (file)
@@ -30,7 +30,7 @@
     <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
     </controller>
-    <filesystem type='mount' accessmode='passthrough'>
+    <filesystem type='mount' accessmode='mapped'>
       <source dir='/var/run/kvm-swan-hostfs'/>
       <target dir='/hostshare'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
index 1fb00f4..1274723 100644 (file)
@@ -1 +1 @@
-/hostshare /hostfs 9p trans=virtio,version=9p2000.L 0 0
+/hostshare /root/shared 9p trans=virtio,version=9p2000.L 0 0
index cac4edd..84ac20b 100755 (executable)
@@ -4,6 +4,7 @@ DIR=$(dirname `readlink -f $0`)
 . $DIR/testing.conf
 
 rm -f $LOGFILE
+mkdir -p $BUILDDIR
 
 if [ $ENABLE_BUILD_BASEIMAGE = "yes" ]
 then
index fdd19ac..66a9fe7 100755 (executable)
@@ -10,7 +10,6 @@ echo "Building guest kernel version $KERNELVERSION"
 
 check_commands bunzip2 bzcat make wget
 
-mkdir -p $BUILDDIR
 cd $BUILDDIR
 
 if [ ! -f "$KERNELTARBALL" ]
index 8f2b3aa..8e10ce5 100755 (executable)
@@ -28,7 +28,7 @@ check_commands partprobe qemu-img qemu-nbd
 load_qemu_nbd
 
 mkdir -p $LOOPDIR
-mkdir -p $ROOTIMGCOMPILEDIR
+mkdir -p $SHAREDDIR/compile
 mkdir -p $IMGDIR
 
 log_action "Creating root image $ROOTIMG"
@@ -47,24 +47,21 @@ log_action "Mounting proc filesystem to $LOOPDIR/proc"
 execute "mount -t proc none $LOOPDIR/proc"
 do_on_exit umount $LOOPDIR/proc
 
-mkdir -p $LOOPDIR/root/compile
-log_action "Mounting $ROOTIMGCOMPILEDIR as /root/compile"
-execute "mount -o bind $ROOTIMGCOMPILEDIR $LOOPDIR/root/compile"
-do_on_exit rm -r $LOOPDIR/root/compile
-do_on_exit umount $LOOPDIR/root/compile
+mkdir -p $LOOPDIR/root/shared
+log_action "Mounting $SHAREDDIR as /root/shared"
+execute "mount -o bind $SHAREDDIR $LOOPDIR/root/shared"
+do_on_exit umount $LOOPDIR/root/shared
 
 echo "Installing software from source"
 RECPDIR=$DIR/recipes
 RECIPES=`ls $RECPDIR/*.mk | xargs -n1 basename`
-execute "cp -r $RECPDIR/patches $LOOPDIR/root/compile" 0
+execute "cp -r $RECPDIR/patches $LOOPDIR/root/shared/compile" 0
 for r in $RECIPES
 do
-       cp $RECPDIR/$r ${LOOPDIR}/root/compile
+       cp $RECPDIR/$r ${LOOPDIR}/root/shared/compile
        log_action "Installing from recipe $r"
-       execute_chroot "make SWANVERSION=$SWANVERSION -C /root/compile -f $r"
+       execute_chroot "make SWANVERSION=$SWANVERSION -C /root/shared/compile -f $r"
 done
 
 log_action "Removing /etc/resolv.conf"
 execute "rm -f $LOOPDIR/etc/resolv.conf"
-
-mkdir -p $LOOPDIR/hostfs
index e4e00bb..9be1f86 100755 (executable)
@@ -19,8 +19,9 @@ check_commands virsh
 log_action "Deploying kernel $KERNEL"
 execute "ln -fs $KNLSRC $KNLTARGET"
 
-log_action "Deploying $ROOTIMGCOMPILEDIR as hostfs"
-execute "ln -Tfs $ROOTIMGCOMPILEDIR $HOSTFSTARGET"
+log_action "Deploying $SHAREDDIR as hostfs"
+execute "chown -R $KVMUSER:$KVMGROUP $SHAREDDIR" 0
+execute "ln -Tfs $SHAREDDIR $HOSTFSTARGET"
 
 for net in $NETWORKS
 do
index b8bd3cf..960d3f6 100644 (file)
@@ -29,6 +29,8 @@ SWANVERSION=5.0.2dr4
 
 # Build directory where the guest kernel and images will be built
 BUILDDIR=$TESTDIR/build
+# Directory shared between host and guests
+SHAREDDIR=$BUILDDIR/shared
 
 # Logfile
 LOGFILE=$BUILDDIR/testing.log
@@ -52,12 +54,13 @@ BASEIMGMIRROR=http://cdn.debian.net/debian
 # The root image is the origin of all guest images. It is a clone of the base
 # image and contains additional test-specific software and patches.
 ROOTIMG=$IMGDIR/root.$IMGEXT
-ROOTIMGCOMPILEDIR=$BUILDDIR/compile
 
 # libvirt config
 NBDEV=/dev/nbd0
 NBDPARTITION=${NBDEV}p1
 VIRTIMGSTORE=/var/lib/libvirt/images
+KVMUSER=libvirt-qemu
+KVMGROUP=kvm
 
 # Directory where test results will be stored
 TESTRESULTSDIR=$TESTDIR/testresults