FILES
}
+# read-only test
+function rw_test {
+ (directories) | create_hierarchy
-(directories) | create_hierarchy
+ dd if=/dev/zero of=$LOWER_DIR0/a bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/b bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/c bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/a bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/b bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/c bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR1/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR1/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/e bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/e bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/f bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/f bs=4000 count=2 2>/dev/null
+ # mount unionfs
+ mount_union "" $LOWER_DIR0 $LOWER_DIR1 $LOWER_DIR2
-# mount unionfs
-mount_union "" $LOWER_DIR0 $LOWER_DIR1 $LOWER_DIR2
-
-# check for chattr support after mount_union, because it may have changed
-# the underlying mounts to cramfs/squashfs.
-CHATTR=""
-if havechattr $LOWER_DIR2 ; then
+ # check for chattr support after mount_union, because it may have
+ # changed the underlying mounts to cramfs/squashfs.
+ CHATTR=""
+ if havechattr $LOWER_DIR2 ; then
CHATTR=1
chattr +i $LOWER_DIR2/d1/d2/d3/d4/f
-fi
+ fi
-./progs/truncate -f $MOUNTPOINT/a 0 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/a 0 || exit $?
-./progs/truncate -f $MOUNTPOINT/b 5000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/b 5000 || exit $?
-./progs/truncate -f $MOUNTPOINT/c 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/c 10000 || exit $?
-./progs/truncate -f $MOUNTPOINT/d 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/d 10000 || exit $?
-./progs/truncate -f $MOUNTPOINT/d1/d2/d3/d4/e 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/d1/d2/d3/d4/e 10000 || exit $?
-if [ ! -z "$CHATTR" ] ; then
+ if [ ! -z "$CHATTR" ] ; then
shouldfail ./truncate -f $MOUNTPOINT/d1/d2/d3/d4/f 10000
-fi
-
-unmount_union
-
+ fi
+ unmount_union
+ echo -n "[rw] "
+}
-#### do same tests with mix of ro branches
+# read-only tests
+function ro_test {
-(directories) | create_hierarchy
+ (directories) | create_hierarchy
-dd if=/dev/zero of=$LOWER_DIR0/a bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/b bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/c bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/a bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/b bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/c bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR0/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR1/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR0/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR1/d bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/e bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/e bs=4000 count=2 2>/dev/null
-dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/f bs=4000 count=2 2>/dev/null
+ dd if=/dev/zero of=$LOWER_DIR2/d1/d2/d3/d4/f bs=4000 count=2 2>/dev/null
+ mount_union "" $LOWER_DIR0 $LOWER_DIR1=ro $LOWER_DIR2=ro
-mount_union "" $LOWER_DIR0 $LOWER_DIR1=ro $LOWER_DIR2=ro
+ # recheck for chattr support after mount_union, because it may have
+ # changed the underlying mounts to cramfs/squashfs.
-# recheck for chattr support after mount_union, because it may have changed
-# the underlying mounts to cramfs/squashfs.
-CHATTR=""
-if havechattr $LOWER_DIR2 ; then
+ CHATTR=""
+ if havechattr $LOWER_DIR2 ; then
CHATTR=1
chattr +i $LOWER_DIR2/d1/d2/d3/d4/f
-fi
+ fi
-./progs/truncate -f $MOUNTPOINT/a 0 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/a 0 || exit $?
-./progs/truncate -f $MOUNTPOINT/b 5000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/b 5000 || exit $?
-./progs/truncate -f $MOUNTPOINT/c 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/c 10000 || exit $?
-./progs/truncate -f $MOUNTPOINT/d 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/d 10000 || exit $?
-./progs/truncate -f $MOUNTPOINT/d1/d2/d3/d4/e 10000 || exit $?
+ ./progs/truncate -f $MOUNTPOINT/d1/d2/d3/d4/e 10000 || exit $?
-if [ ! -z "$CHATTR" ] ; then
+ if [ ! -z "$CHATTR" ] ; then
shouldfail ./progs/truncate -f $MOUNTPOINT/d1/d2/d3/d4/f 10000
-fi
+ fi
+
+ unmount_union
+ echo -n "[ro] "
+}
-unmount_union
+rw_test
+ro_test
complete_test