1#!/bin/sh 2# Copyright 2007 by Denys Vlasenko <vda.linux@googlemail.com> 3# Licensed under GPLv2, see file LICENSE in this source tree. 4 5. ./testing.sh 6test -f "$bindir/.config" && . "$bindir/.config" 7 8test "`id -u`" = 0 || { 9 echo "SKIPPED: mount (must be root to test this)" 10 exit 0 11} 12 13# Without MOUNT_LOOP_CREATE, the test will fail if /dev/loopN's do not exist 14if test x"$CONFIG_MKFS_MINIX" != x"y" \ 15|| test x"$CONFIG_FEATURE_MINIX2" != x"y" \ 16|| test x"$CONFIG_FEATURE_MOUNT_LOOP" != x"y" \ 17|| test x"$CONFIG_FEATURE_MOUNT_LOOP_CREATE" != x"y" \ 18|| test x"$CONFIG_FEATURE_MOUNT_FLAGS" != x"y" \ 19|| test x"$CONFIG_FEATURE_DEVFS" = x"y" \ 20; then 21 echo "SKIPPED: mount" 22 exit 0 23fi 24 25testdir="$PWD/mount.testdir" 26 27dd if=/dev/zero of=mount.image1m count=1 bs=1M 2>/dev/null || { echo "dd error"; exit 1; } 28mkfs.minix -v mount.image1m >/dev/null 2>&1 || { echo "mkfs.minix error"; exit 1; } 29modprobe minix 2>/dev/null 30mkdir "$testdir" 2>/dev/null 31umount -d "$testdir" 2>/dev/null 32 33# testing "test name" "command" "expected result" "file input" "stdin" 34# file input will be file called "input" 35# test can create a file "actual" instead of writing to stdout 36 37# This will always fail on !CONFIG_MANDATORY_FILE_LOCKING kernels 38test "$SKIP_MOUNT_MAND_TESTS" = "1" || \ 39testing "mount -o remount,mand" \ 40"mount -o loop mount.image1m $testdir "\ 41"&& grep -Fc $testdir </proc/mounts "\ 42"&& mount -o remount,mand $testdir "\ 43"&& grep -F $testdir </proc/mounts | grep -c '[, ]mand[, ]'"\ 44"|| grep -F $testdir </proc/mounts" \ 45 "1\n""1\n" \ 46 "" "" 47 48umount -d "$testdir" 49rmdir "$testdir" 50rm mount.image1m 51 52 53# Bug: mount.shared1 directory shows no files (has to show files a and b) 54optional FEATURE_LS_RECURSIVE FEATURE_LS_SORTFILES 55testing "mount bind+rshared" "\ 56mkdir -p mount.dir mount.shared1 mount.shared2 57touch mount.dir/a mount.dir/b 58 59mount --bind mount.shared1 mount.shared1 2>&1 60mount --make-rshared mount.shared1 2>&1 61mount --bind mount.shared2 mount.shared2 2>&1 62mount --make-rshared mount.shared2 2>&1 63 64mount --bind mount.shared2 mount.shared1 2>&1 65mount --bind mount.dir mount.shared2 2>&1 66 67ls -R mount.dir mount.shared1 mount.shared2 2>&1 68 69umount mount.dir mount.shared1 mount.shared2 2>/dev/null 70umount mount.dir mount.shared1 mount.shared2 2>/dev/null 71umount mount.dir mount.shared1 mount.shared2 2>/dev/null 72rm -f mount.dir/a mount.dir/b mount.dir/c 73rmdir mount.dir mount.shared1 mount.shared2 74" \ 75"\ 76mount.dir: 77a 78b 79 80mount.shared1: 81a 82b 83 84mount.shared2: 85a 86b 87" \ 88 "" "" 89SKIP= 90 91 92testing "mount RO loop" "\ 93exec 2>&1 94umount -d mount.dir 2>/dev/null 95rmdir mount.dir 2>/dev/null 96mkdir -p mount.dir 97( 98cd mount.dir || { echo 'cd error'; exit 1; } 99mkdir z1 z2 || { echo 'mkdir error'; exit 1; } 100mount -t tmpfs tmpfs z1 || { echo 'mount tmpfs error'; exit 1; } 101dd if=/dev/zero of=z1/e2img count=10 bs=1M 2>/dev/null || { echo 'dd error'; exit 1; } 102mke2fs -F z1/e2img 2>/dev/null >&2 || { echo 'mke2fs error'; exit 1; } 103mount -r -o loop -t ext2 z1/e2img z2 || { echo 'mount -r -o loop error'; exit 1; } 104mount -o remount,ro z1 || { echo 'mount -o remount,ro error'; exit 1; } 105) 106umount -d mount.dir/z2 107##losetup -d /dev/loop* 108umount -d mount.dir/z1 109rm -rf mount.dir 110echo DONE 111" \ 112"DONE\n" "" "" 113 114 115exit $FAILCOUNT 116