3 # Copyright (C) 2010 Karel Zak <kzak@redhat.com>
5 TS_TOPDIR
="${0%/*}/../.."
8 .
$TS_TOPDIR/functions.sh
11 ts_check_test_command
"$TS_CMD_FDISK"
12 ts_check_test_command
"$TS_CMD_FINDMNT"
13 ts_check_test_command
"$TS_CMD_MOUNT"
14 ts_check_test_command
"$TS_CMD_UMOUNT"
15 ts_check_test_command
"$TS_CMD_UUIDGEN"
18 ts_check_prog
"mkfs.ext3"
19 ts_check_prog
"mkfs.ext4"
23 if [ "$TS_ENABLE_ASAN" == "yes" ]; then
27 TESTPROG
="$TS_HELPER_PYLIBMOUNT_CONTEXT"
28 [ -x $TESTPROG ] || ts_die
"test script missing"
30 PYDBG
="$PYTHON -m pdb"
32 UUID
=$
($TS_CMD_UUIDGEN)
33 MOUNTPOINT
="$TS_MOUNTPOINT"
34 TS_NOEXIST
="$TS_OUTDIR/${TS_TESTNAME}-${TS_SUBNAME}-noex"
35 [ -d $TS_NOEXIST ] && rmdir $TS_NOEXIST
38 $TS_CMD_UMOUNT $MOUNTPOINT &> /dev
/null
40 # set global variable TS_DEVICE
41 ts_scsi_debug_init dev_size_mb
=100
42 DEVNAME
=$
(basename $TS_DEVICE)
45 has_mtab
=$
( ts_has_mtab_support
)
46 if [ "$has_mtab" == "yes" ]; then
50 ts_log
"Create partitions"
51 $TS_CMD_FDISK ${TS_DEVICE} &> /dev
/null
<<EOF
61 DEVICE
="${TS_DEVICE}1"
65 grep -q " $DEVNAME\$" /proc
/partitions
67 ts_skip
"no partition!"
70 ts_log
"Create filesystem"
71 mkfs.ext4
-L "$LABEL" -U "$UUID" $DEVICE &> /dev
/null
75 export LIBMOUNT_MTAB
=$TS_OUTPUT.mtab
78 # check local mtab of system mountinfo
80 if [ "$MOUNTINFO_ONLY" = "yes" ]; then
84 grep -q "\(^\| \)$1 " $LIBMOUNT_MTAB && return 0
90 ts_device_has
"TYPE" "ext4" $DEVICE || ts_die
"Cannot find ext3 on $DEVICE"
93 ts_init_subtest
"mount-by-devname"
94 mkdir
-p $MOUNTPOINT &> /dev
/null
95 $PYTHON $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
96 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
100 ts_init_subtest
"umount-by-devname"
101 $PYTHON $TESTPROG --umount $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
102 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
106 ts_init_subtest
"mount-by-label"
107 mkdir
-p $MOUNTPOINT &> /dev
/null
108 $PYTHON $TESTPROG --mount LABEL
="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
109 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
113 ts_init_subtest
"umount-by-mountpoint"
114 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
115 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
119 ts_init_subtest
"mount-by-uuid"
120 mkdir
-p $MOUNTPOINT &> /dev
/null
121 $PYTHON $TESTPROG --mount UUID
="$UUID" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
122 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
123 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
124 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
128 ts_init_subtest
"mount-flags"
129 mkdir
-p $MOUNTPOINT &> /dev
/null
130 $PYTHON $TESTPROG --mount -o ro
,noexec
,nosuid
,strictatime
$DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
131 $TS_CMD_FINDMNT --kernel $MOUNTPOINT -o VFS-OPTIONS
-n >> $TS_OUTPUT 2>> $TS_ERRLOG
132 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
134 $PYTHON $TESTPROG --mount -o remount
,rw
$MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
135 $TS_CMD_FINDMNT --kernel $MOUNTPOINT -o VFS-OPTIONS
-n >> $TS_OUTPUT 2>> $TS_ERRLOG
137 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
138 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
142 ts_init_subtest
"mount-loopdev"
143 mkdir
-p $MOUNTPOINT &> /dev
/null
145 mkfs.ext3
-F $img &> /dev
/null
148 $PYTHON $TESTPROG --mount -o loop
$img $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
149 is_mounted
$MOUNTPOINT ||
echo "$MOUNTPOINT not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
151 $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
152 is_mounted
$MOUNTPOINT && echo "$MOUNTPOINT still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
155 ts_init_subtest
"x-mount.mkdir"
156 $TS_CMD_MOUNT -o x-mount.mkdir
--bind $MOUNTPOINT $TS_NOEXIST >> $TS_OUTPUT 2>> $TS_ERRLOG &&
157 echo "successfully mounted" >> $TS_OUTPUT
161 $TS_CMD_UMOUNT $TS_NOEXIST