sleep 0.25
$@
ret=$?
- if test $ret -ne 0 && test "$1" != 'lsof'; then
+ if test $ret -ne 0 && test "$1 $2 $3" != 'mount -t wrapfs'; then
echo "$0: exit code $ret"
exit $ret
fi
}
-if cat /proc/mounts | grep $SCRATCH_DIR; then
- runcmd umount $SCRATCH_DIR
-fi
-
-if ! id luser &>/dev/null; then
- runcmd adduser --shell /bin/sh luser
-fi
+dirs="$TMP_DIR $LOWER_DIR $SCRATCH_DIR"
+for d in $dirs; do
+ echo checking dir $d
+ if cat /proc/mounts | grep $d; then
+ runcmd umount $d
+ fi
+done
runcmd mkfs -t $FS_TYPE $SCRATCH_DEV <<< y
-runcmd mount /dev/sdb $SCRATCH_DIR
+runcmd mount $SCRATCH_DEV $SCRATCH_DIR
runcmd rm -rf $SCRATCH_DIR/*
runcmd touch $SCRATCH_DIR/root
runcmd touch $SCRATCH_DIR/ubuntu
runcmd ./mount-idmapped --map-mount b:0:1000:1 --map-mount b:1000:1001:1 --map-mount b:1001:0:1 $SCRATCH_DIR $LOWER_DIR
runcmd mount -t wrapfs $LOWER_DIR $TMP_DIR
-ls2=$(ls -l $TMP_DIR)
+if test $ret != 32; then
+ echo wrapfs returned unexpected error: $ret
+else
+ echo wrapfs returned correct error attempting to mount on idmapped mount
+fi
-echo $ls1
-echo $ls2
+#ls2=$(ls -l $TMP_DIR)
+#echo $ls1
+#echo $ls2
--- /dev/null
+#!/bin/sh
+SCRATCH_DEV=/dev/sdb
+SCRATCH_DIR=/n/scratch
+LOWER_DIR=/n/lower
+TMP_DIR=/n/tmp
+FS_TYPE=ext4
+
+function runcmd
+{
+ echo "CMD: $@"
+ sleep 0.25
+ $@
+ ret=$?
+ if test $ret -ne 0 && test "$1 $2 $3" != 'mount -t wrapfs'; then
+ echo "$0: exit code $ret"
+ exit $ret
+ fi
+}
+
+dirs="$TMP_DIR $LOWER_DIR $SCRATCH_DIR"
+for d in $dirs; do
+ echo checking dir $d
+ if cat /proc/mounts | grep $d; then
+ runcmd umount $d
+ fi
+done
+
+runcmd mkfs -t $FS_TYPE $SCRATCH_DEV <<< y
+runcmd mount $SCRATCH_DEV $SCRATCH_DIR
+runcmd mount -t wrapfs $SCRATCH_DIR $LOWER_DIR
+runcmd mount -t wrapfs $LOWER_DIR $TMP_DIR
+if test $ret != 32; then
+ echo wrapfs returned unexpected error code attempting to mount on top of itself: $ret
+else
+ echo wrapfs returned expected error code
+fi