| #!/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 |