3 # Copyright (C) 2013 Karel Zak <kzak@redhat.com>
5 TS_TOPDIR
="${0%/*}/../.."
6 TS_DESC
="umount-all-targets"
8 .
$TS_TOPDIR/functions.sh
11 ts_check_test_command
"$TS_CMD_MOUNT"
12 ts_check_test_command
"$TS_CMD_UMOUNT"
13 ts_check_test_command
"$TS_CMD_FDISK"
16 ts_check_prog
"mkfs.ext2"
18 $TS_CMD_UMOUNT --help |
grep -q all-targets
19 [ $?
-eq 1 ] && ts_skip
"all-targets unsupported"
21 has_mtab
=$
( ts_has_mtab_support
)
22 if [ "$has_mtab" == "yes" ]; then
23 [ -L /etc
/mtab
] || ts_skip
"regular mtab"
26 # set global variable TS_DEVICE
27 ts_scsi_debug_init dev_size_mb
=50
29 ts_log
"Create partitions"
30 $TS_CMD_FDISK ${TS_DEVICE} &> /dev
/null
<<EOF
56 ts_log
"Create filesystem A"
57 mkfs.ext2
${TS_DEVICE}1 &> /dev
/null
58 ts_log
"Create filesystem B"
59 mkfs.ext2
${TS_DEVICE}2 &> /dev
/null
60 ts_log
"Create filesystem C"
61 mkfs.ext2
${TS_DEVICE}3 &> /dev
/null
62 ts_log
"Create filesystem D"
63 mkfs.ext2
${TS_DEVICE}4 &> /dev
/null
67 function multi_mount
() {
71 ts_log
"prepare: Mount dev to mnt1"
72 [ -d "${MNT}1" ] || mkdir
-p ${MNT}1
73 $TS_CMD_MOUNT $DEV ${MNT}1 >> $TS_OUTPUT 2>> $TS_ERRLOG
75 ts_log
"prepare: Mount dev to mnt2"
76 [ -d "${MNT}2" ] || mkdir
-p ${MNT}2
77 $TS_CMD_MOUNT $DEV ${MNT}2 >> $TS_OUTPUT 2>> $TS_ERRLOG
79 ts_log
"prepare: Mount /dev/xxx1 to mnt3"
80 [ -d "${MNT}3" ] || mkdir
-p ${MNT}3
81 $TS_CMD_MOUNT $DEV ${MNT}3 >> $TS_OUTPUT 2>> $TS_ERRLOG
86 # use the same top-level mountpoint for all sub-tests
87 MOUNTPOINT
=$TS_MOUNTPOINT
90 # The same device mounted on more places, umount all by mountpoint name
92 ts_init_subtest
"all-targets-mnt"
93 multi_mount
${TS_DEVICE}1 $MOUNTPOINT
94 $TS_CMD_UMOUNT --all-targets ${MOUNTPOINT}1 >> $TS_OUTPUT 2>> $TS_ERRLOG
95 [ $?
== 0 ] || ts_log
"umount failed"
99 # The same device mounted on more places, umount all by device name
101 ts_init_subtest
"all-targets-dev"
102 multi_mount
${TS_DEVICE}1 $MOUNTPOINT
103 $TS_CMD_UMOUNT --all-targets ${TS_DEVICE}1 >> $TS_OUTPUT 2>> $TS_ERRLOG
104 [ $?
== 0 ] || ts_log
"umount failed"
108 # The same device mounted on more places, one of the mountpoints also contains
109 # sub-mounts. Umount all by one umount all by top-level device name.
111 ts_init_subtest
"all-targets-recursive"
112 multi_mount
${TS_DEVICE}1 $MOUNTPOINT
113 [ -d "${MOUNTPOINT}1/subA" ] || mkdir
-p ${MOUNTPOINT}1/subA
114 $TS_CMD_MOUNT ${TS_DEVICE}2 ${MOUNTPOINT}1/subA
115 [ -d "${MOUNTPOINT}1/subA/subAB" ] || mkdir
-p ${MOUNTPOINT}1/subA
/subAB
116 $TS_CMD_MOUNT ${TS_DEVICE}3 ${MOUNTPOINT}1/subA
/subAB
117 [ -d "${MOUNTPOINT}1/subB" ] || mkdir
-p ${MOUNTPOINT}1/subB
118 $TS_CMD_MOUNT ${TS_DEVICE}4 ${MOUNTPOINT}1/subB
119 $TS_CMD_UMOUNT --recursive --all-targets ${TS_DEVICE}1 >> $TS_OUTPUT 2>> $TS_ERRLOG
120 [ $?
== 0 ] || ts_log
"umount failed"