3 # Copyright (C) 2012 Karel Zak <kzak@redhat.com>
5 TS_TOPDIR
="${0%/*}/../.."
6 TS_DESC
="umount-recursive"
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 recursive
19 [ $?
-eq 1 ] && ts_skip
"recursive unsupported"
22 # set global variable TS_DEVICE
23 ts_scsi_debug_init dev_size_mb
=50
25 ts_log
"Create partitions"
26 $TS_CMD_FDISK --noauto-pt ${TS_DEVICE} &> /dev
/null
<<EOF
53 ts_log
"Create filesystem A"
54 mkfs.ext2
${TS_DEVICE}1 &> /dev
/null
55 ts_log
"Create filesystem B"
56 mkfs.ext2
${TS_DEVICE}2 &> /dev
/null
57 ts_log
"Create filesystem C"
58 mkfs.ext2
${TS_DEVICE}3 &> /dev
/null
59 ts_log
"Create filesystem D"
60 mkfs.ext2
${TS_DEVICE}4 &> /dev
/null
66 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
68 ts_log
"A) Mount root"
69 $TS_CMD_MOUNT ${TS_DEVICE}1 $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
70 $TS_CMD_MOUNT --make-shared $TS_MOUNTPOINT &> /dev
/null
72 ts_log
"B) Mount child"
73 mkdir
-p $TS_MOUNTPOINT/mntB
74 $TS_CMD_MOUNT ${TS_DEVICE}2 $TS_MOUNTPOINT/mntB
>> $TS_OUTPUT 2>> $TS_ERRLOG
76 ts_log
"B2) Mount child-bind"
77 mkdir
-p $TS_MOUNTPOINT/bindB
78 $TS_CMD_MOUNT --bind $TS_MOUNTPOINT/mntB
$TS_MOUNTPOINT/bindB
>> $TS_OUTPUT 2>> $TS_ERRLOG
80 ts_log
"C) Mount child/child"
81 mkdir
-p $TS_MOUNTPOINT/mntB
/mnt
{C
,D
}
82 $TS_CMD_MOUNT ${TS_DEVICE}3 $TS_MOUNTPOINT/mntB
/mntC
>> $TS_OUTPUT 2>> $TS_ERRLOG
84 ts_log
"D) Mount child/child"
85 $TS_CMD_MOUNT ${TS_DEVICE}4 $TS_MOUNTPOINT/mntB
/mntD
>> $TS_OUTPUT 2>> $TS_ERRLOG
87 ts_log
"E) Mount child-bind"
88 mkdir
-p $TS_MOUNTPOINT/bindC
89 $TS_CMD_MOUNT --bind $TS_MOUNTPOINT/mntB
/mntC
$TS_MOUNTPOINT/bindC
&> /dev
/null
91 ts_log
"F) Mount mountpoint-bind"
92 $TS_CMD_MOUNT --bind $TS_MOUNTPOINT $TS_MOUNTPOINT &> /dev
/null
95 $TS_CMD_UMOUNT --recursive $TS_MOUNTPOINT >> $TS_OUTPUT 2>> $TS_ERRLOG
96 [ $?
== 0 ] || ts_die
"umount failed"