123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #!/bin/sh
- # Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com>
- # Licensed under GPLv2, see file LICENSE in this source tree.
- . ./testing.sh
- test -f "$bindir/.config" && . "$bindir/.config"
- test "`id -u`" = 0 || {
- echo "SKIPPED: mount (must be root to test this)"
- exit 0
- }
- # Without MOUNT_LOOP_CREATE, the test will fail if /dev/loopN's do not exist
- if test x"$CONFIG_MKFS_MINIX" != x"y" \
- || test x"$CONFIG_FEATURE_MINIX2" != x"y" \
- || test x"$CONFIG_FEATURE_MOUNT_LOOP" != x"y" \
- || test x"$CONFIG_FEATURE_MOUNT_LOOP_CREATE" != x"y" \
- || test x"$CONFIG_FEATURE_MOUNT_FLAGS" != x"y" \
- || test x"$CONFIG_FEATURE_DEVFS" = x"y" \
- ; then
- echo "SKIPPED: mount"
- exit 0
- fi
- testdir="$PWD/mount.testdir"
- dd if=/dev/zero of=mount.image1m count=1 bs=1M 2>/dev/null || { echo "dd error"; exit 1; }
- mkfs.minix -v mount.image1m >/dev/null 2>&1 || { echo "mkfs.minix error"; exit 1; }
- modprobe minix 2>/dev/null
- mkdir "$testdir" 2>/dev/null
- umount -d "$testdir" 2>/dev/null
- # testing "test name" "command" "expected result" "file input" "stdin"
- # file input will be file called "input"
- # test can create a file "actual" instead of writing to stdout
- # This will always fail on !CONFIG_MANDATORY_FILE_LOCKING kernels
- test "$SKIP_MOUNT_MAND_TESTS" = "1" || \
- testing "mount -o remount,mand" \
- "mount -o loop mount.image1m $testdir "\
- "&& grep -Fc $testdir </proc/mounts "\
- "&& mount -o remount,mand $testdir "\
- "&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\
- "|| grep -F $testdir </proc/mounts" \
- "1\n""1\n" \
- "" ""
- umount -d "$testdir"
- rmdir "$testdir"
- rm mount.image1m
- # Bug: mount.shared1 directory shows no files (has to show files a and b)
- optional FEATURE_LS_RECURSIVE FEATURE_LS_SORTFILES
- testing "mount bind+rshared" "\
- mkdir -p mount.dir mount.shared1 mount.shared2
- touch mount.dir/a mount.dir/b
- mount --bind mount.shared1 mount.shared1 2>&1
- mount --make-rshared mount.shared1 2>&1
- mount --bind mount.shared2 mount.shared2 2>&1
- mount --make-rshared mount.shared2 2>&1
- mount --bind mount.shared2 mount.shared1 2>&1
- mount --bind mount.dir mount.shared2 2>&1
- ls -R mount.dir mount.shared1 mount.shared2 2>&1
- umount mount.dir mount.shared1 mount.shared2 2>/dev/null
- umount mount.dir mount.shared1 mount.shared2 2>/dev/null
- umount mount.dir mount.shared1 mount.shared2 2>/dev/null
- rm -f mount.dir/a mount.dir/b mount.dir/c
- rmdir mount.dir mount.shared1 mount.shared2
- " \
- "\
- mount.dir:
- a
- b
- mount.shared1:
- a
- b
- mount.shared2:
- a
- b
- " \
- "" ""
- SKIP=
- testing "mount RO loop" "\
- exec 2>&1
- umount -d mount.dir 2>/dev/null
- rmdir mount.dir 2>/dev/null
- mkdir -p mount.dir
- (
- cd mount.dir || { echo 'cd error'; exit 1; }
- mkdir z1 z2 || { echo 'mkdir error'; exit 1; }
- mount -t tmpfs tmpfs z1 || { echo 'mount tmpfs error'; exit 1; }
- dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; }
- mke2fs -F z1/e2img 2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; }
- mount -r -o loop -t ext2 z1/e2img z2 || { echo 'mount -r -o loop error'; exit 1; }
- mount -o remount,ro z1 || { echo 'mount -o remount,ro error'; exit 1; }
- )
- umount -d mount.dir/z2
- ##losetup -d /dev/loop*
- umount -d mount.dir/z1
- rm -rf mount.dir
- echo DONE
- " \
- "DONE\n" "" ""
- exit $FAILCOUNT
|