#!/bin/sh

set -e

#sudo sh -c './virtiofsd --socket-path=/tmp/vfsdsock0 -o source=$PWD/virtiofs-shared -o cache=always -f &'
sudo sh -c './virtiofsd --socket-path=/tmp/vfsdsock0 -o source=$PWD/virtiofs-shared -o no_writeback &'

sleep 1

sudo chmod go+rw /tmp/vfsdsock0

# TODO: Add your arguments to run some test system
x86_64-softmmu/qemu-system-x86_64 \
    -accel kvm -m 4G \
    -chardev socket,id=vfsdsock0,path=/tmp/vfsdsock0 \
    -device vhost-user-fs-pci,queue-size=1024,chardev=vfsdsock0,tag=host \
    -object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on \
    -numa node,memdev=mem &

sleep 1

rm -f fs0.img fs1.img fs2.img

truncate -s 512M fs0.img
truncate -s 512M fs1.img
truncate -s 512M fs2.img

mkfs.xfs -q fs0.img

sleep 1

rm -f fs0.img fs1.img fs2.img

truncate -s 512M fs0.img
truncate -s 512M fs1.img
truncate -s 512M fs2.img

mkfs.xfs -q fs0.img
mkfs.xfs -q fs1.img
mkfs.xfs -q fs2.img

sudo mkdir -p virtiofs-shared/mnt0-0
sudo mkdir -p virtiofs-shared/mnt0-1
sudo mkdir -p virtiofs-shared/mnt1

sudo touch virtiofs-shared/mnt0-0/0-0-not-mounted
sudo touch virtiofs-shared/mnt0-1/0-1-not-mounted
sudo touch virtiofs-shared/mnt1/1-not-mounted

for i in $(seq 0 59); do
    echo "Mounting in $((60 - i)) s"
    sleep 1
done

dev0=$(sudo losetup -f --show fs0.img)
dev1=$(sudo losetup -f --show fs1.img)
dev2=$(sudo losetup -f --show fs2.img)

sudo mount "$dev0" virtiofs-shared/mnt0-0
sudo touch virtiofs-shared/mnt0-0/dev0-mounted
sudo mount "$dev0" virtiofs-shared/mnt0-1

sudo mkdir -p virtiofs-shared/mnt0-0/sub
sudo touch virtiofs-shared/mnt0-0/sub/dev2-not-mounted
sudo mount "$dev2" virtiofs-shared/mnt0-0/sub
sudo touch virtiofs-shared/mnt0-0/sub/dev2-mounted

sudo mount "$dev1" virtiofs-shared/mnt1
sudo touch virtiofs-shared/mnt1/dev1-mounted

sudo mkdir -p virtiofs-shared/mnt1/sub0
sudo touch virtiofs-shared/mnt1/sub0/dev2-not-mounted

sudo mount "$dev0" virtiofs-shared/mnt1/sub0

echo 'Mounted'

wait

sudo umount virtiofs-shared/mnt0-0/sub
sudo umount virtiofs-shared/mnt0-0
sudo umount virtiofs-shared/mnt0-1
sudo umount virtiofs-shared/mnt1/sub0
sudo umount virtiofs-shared/mnt1

sudo losetup -d "$dev0"
sudo losetup -d "$dev1"
sudo losetup -d "$dev2"
