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"
21 TESTPROG
="$TS_HELPER_LIBMOUNT_CONTEXT"
23 UUID
=$
($TS_CMD_UUIDGEN)
25 MOUNTPOINT
="$TS_MOUNTPOINT"
26 [ -x $TESTPROG ] || ts_skip
"test not compiled"
29 $TS_CMD_UMOUNT $MOUNTPOINT &> /dev
/null
31 # set global variable TS_DEVICE
32 ts_scsi_debug_init dev_size_mb
=100
33 DEVNAME
=$
(basename $TS_DEVICE)
36 has_mtab
=$
( ts_has_mtab_support
)
37 if [ "$has_mtab" == "yes" ]; then
41 ts_log
"Create partitions"
42 $TS_CMD_FDISK ${TS_DEVICE} &> /dev
/null
<<EOF
53 DEVICE
="${TS_DEVICE}1"
57 grep -q " $DEVNAME\$" /proc
/partitions
59 ts_skip
"no partition!"
62 ts_log
"Create filesystem"
63 mkfs.ext4
-L "$LABEL" -U "$UUID" $DEVICE &> /dev
/null
67 export LIBMOUNT_MTAB
=$TS_OUTPUT.mtab
70 # check local mtab of system mountinfo
72 if [ "$MOUNTINFO_ONLY" = "yes" ]; then
76 grep -q "$1" $LIBMOUNT_MTAB && return 0
82 ts_device_has
"TYPE" "ext4" $DEVICE || ts_die
"Cannot find ext3 on $DEVICE"
85 ts_init_subtest
"mount-by-devname"
86 mkdir
-p $MOUNTPOINT &> /dev
/null
87 ts_run
$TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
88 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
92 ts_init_subtest
"umount-by-devname"
93 ts_run
$TESTPROG --umount $DEVICE >> $TS_OUTPUT 2>> $TS_ERRLOG
94 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
98 ts_init_subtest
"mount-by-label"
99 mkdir
-p $MOUNTPOINT &> /dev
/null
100 ts_run
$TESTPROG --mount LABEL
="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
101 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
105 ts_init_subtest
"umount-by-mountpoint"
106 ts_run
$TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
107 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
111 ts_init_subtest
"mount-by-uuid"
112 mkdir
-p $MOUNTPOINT &> /dev
/null
113 ts_run
$TESTPROG --mount UUID
="$UUID" $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
114 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
116 ts_run
$TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
118 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
122 ts_init_subtest
"mount-flags"
123 mkdir
-p $MOUNTPOINT &> /dev
/null
124 ts_run
$TESTPROG --mount -o ro
,noexec
,nosuid
,strictatime
$DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
125 $TS_CMD_FINDMNT --kernel --mountpoint $MOUNTPOINT -o VFS-OPTIONS
-n >> $TS_OUTPUT 2>> $TS_ERRLOG
126 is_mounted
$DEVICE ||
echo "$DEVICE not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
128 ts_run
$TESTPROG --mount -o remount
,rw
$MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
129 $TS_CMD_FINDMNT --kernel --mountpoint $MOUNTPOINT -o VFS-OPTIONS
-n >> $TS_OUTPUT 2>> $TS_ERRLOG
131 ts_run
$TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
132 is_mounted
$DEVICE && echo "$DEVICE still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
136 ts_init_subtest
"mount-loopdev"
137 mkdir
-p $MOUNTPOINT &> /dev
/null
139 mkfs.ext3
-F $img &> /dev
/null
142 ts_run
$TESTPROG --mount -o loop
$img $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
143 is_mounted
$MOUNTPOINT ||
echo "$MOUNTPOINT not mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
145 ts_run
$TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
146 is_mounted
$MOUNTPOINT && echo "$MOUNTPOINT still mounted" >> $TS_OUTPUT 2>> $TS_ERRLOG
150 # deprecated (x-* mount option maintained in userspace (e.g. utab)
151 ts_init_subtest
"x-permanent"
152 TS_NOEXIST
="$TS_OUTDIR/${TS_TESTNAME}-${TS_SUBNAME}-noex"
153 [ -d $TS_NOEXIST ] && rmdir $TS_NOEXIST
155 $TS_CMD_MOUNT -o x-mount.mkdir
--bind $MOUNTPOINT $TS_NOEXIST >> $TS_OUTPUT 2>> $TS_ERRLOG &&
156 echo "successfully mounted" >> $TS_OUTPUT
159 $TS_CMD_UMOUNT $TS_NOEXIST
164 ts_init_subtest
"X-comment"
165 TS_NOEXIST
="$TS_OUTDIR/${TS_TESTNAME}-${TS_SUBNAME}-noex"
166 [ -d $TS_NOEXIST ] && rmdir $TS_NOEXIST
168 $TS_CMD_MOUNT -o X-mount.mkdir
--bind $MOUNTPOINT $TS_NOEXIST >> $TS_OUTPUT 2>> $TS_ERRLOG &&
169 echo "successfully mounted" >> $TS_OUTPUT
172 $TS_CMD_UMOUNT $TS_NOEXIST