]>
git.ipfire.org Git - thirdparty/util-linux.git/blob - tests/ts/libmount/loop
b52b7476af93190a5b68372a9170e8da84cba372
4 # Copyright (C) 2016 Stanislav Brabec <sbrabec@suse.cz>
6 # This file is part of util-linux.
8 # This file is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
13 # This file is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
19 TS_TOPDIR
="${0%/*}/../.."
20 TS_DESC
="losetup-loop"
22 .
$TS_TOPDIR/functions.sh
25 ts_check_test_command
"$TS_CMD_MOUNT"
26 ts_check_test_command
"$TS_CMD_FINDMNT"
27 ts_check_test_command
"$TS_CMD_LOSETUP"
31 ts_check_prog
"mkfs.ext3"
33 function verify_mount_dev
{
36 local dev_mounted
=$
($TS_CMD_FINDMNT -no SOURCE
--mountpoint "$mp")
38 if test "$dev" != "$dev_mounted" ; then
39 echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2
45 # file-* tests: Backing file is a regular file
47 BACKFILE
=$
(ts_image_init
10)
49 mkfs.ext3
-F $BACKFILE &> /dev
/null || ts_die
"Cannot make ext3 on $BACKFILE"
51 # All tests are separated by "udevadm settle" because loop device exists some time after
52 # "losetup -d". This device confuses some tests. And find-race-condition, tests,
53 # whether re-use of this device works.
56 ts_init_subtest
"file"
57 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
58 $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
59 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
64 ts_init_subtest
"file-o-loop"
65 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
66 $TS_CMD_MOUNT -oloop "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
67 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
72 ts_init_subtest
"dev-loop"
73 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
74 LODEV
=$
( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT )
75 $TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
76 verify_mount_dev
"$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
77 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
78 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1
83 ts_init_subtest
"o-loop-val"
84 if [ "$TS_PARALLEL" = "yes" ]; then
85 # There is a race in $LODEV is usage
86 ts_skip_subtest
"no-reentrant"
88 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
89 LODEV
=$
( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT )
90 $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
91 verify_mount_dev
"$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
92 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
98 ts_init_subtest
"reuse"
99 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
100 LODEV
=$
( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT )
101 $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
102 verify_mount_dev
"$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
103 $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>&1
104 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1
109 ts_init_subtest
"conflict"
110 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
111 LODEV
=$
( $TS_CMD_LOSETUP --find --nooverlap --show --offset=1000 "$BACKFILE" 2>> $TS_OUTPUT )
112 $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
113 |
sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
114 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1
119 ts_init_subtest
"o-loop-val-initialized"
120 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
121 LODEV
=$
( $TS_CMD_LOSETUP --show -f "$BACKFILE" 2>>$TS_OUTPUT)
122 $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
123 |
sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
124 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1
129 ts_init_subtest
"o-loop-val-conflict"
130 [ -d "$TS_MOUNTPOINT" ] || mkdir
-p $TS_MOUNTPOINT
131 cp "$BACKFILE" "$BACKFILE"-2
132 LODEV
=$
( $TS_CMD_LOSETUP --show -f "$BACKFILE"-2 2>> $TS_OUTPUT)
133 $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \
134 |
sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT
135 $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>&1