]>
Commit | Line | Data |
---|---|---|
2edb8525 SB |
1 | #!/bin/bash |
2 | ||
3 | # | |
4 | # Copyright (C) 2016 Stanislav Brabec <sbrabec@suse.cz> | |
5 | # | |
6 | # This file is part of util-linux. | |
7 | # | |
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. | |
12 | # | |
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. | |
17 | # | |
18 | ||
19 | TS_TOPDIR="${0%/*}/../.." | |
20 | TS_DESC="losetup-loop" | |
21 | ||
22 | . $TS_TOPDIR/functions.sh | |
23 | ts_init "$*" | |
24 | ||
25 | ts_check_test_command "$TS_CMD_MOUNT" | |
bb872a23 | 26 | ts_check_test_command "$TS_CMD_UMOUNT" |
a837b3bd | 27 | ts_check_test_command "$TS_CMD_FINDMNT" |
2edb8525 SB |
28 | ts_check_test_command "$TS_CMD_LOSETUP" |
29 | ||
30 | ts_skip_nonroot | |
31 | ts_check_losetup | |
32 | ts_check_prog "mkfs.ext3" | |
33 | ||
a837b3bd RM |
34 | function verify_mount_dev { |
35 | local dev=$1 | |
36 | local mp=$2 | |
eff2c9a4 | 37 | local dev_mounted=$($TS_CMD_FINDMNT -no SOURCE --mountpoint "$mp") |
a837b3bd RM |
38 | |
39 | if test "$dev" != "$dev_mounted" ; then | |
40 | echo "Mounted incorrect device: have '$dev_mounted', want '$dev'" >&2 | |
41 | return 1 | |
42 | fi | |
43 | } | |
44 | ||
2edb8525 SB |
45 | # |
46 | # file-* tests: Backing file is a regular file | |
47 | # | |
48 | BACKFILE=$(ts_image_init 10) | |
49 | ||
50 | mkfs.ext3 -F $BACKFILE &> /dev/null || ts_die "Cannot make ext3 on $BACKFILE" | |
51 | ||
52 | # All tests are separated by "udevadm settle" because loop device exists some time after | |
53 | # "losetup -d". This device confuses some tests. And find-race-condition, tests, | |
54 | # whether re-use of this device works. | |
55 | udevadm settle | |
56 | ||
57 | ts_init_subtest "file" | |
58 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
cbf858aa KZ |
59 | $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG |
60 | $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
2edb8525 SB |
61 | udevadm settle |
62 | ts_log "Success" | |
63 | ts_finalize_subtest | |
64 | ||
65 | ts_init_subtest "file-o-loop" | |
66 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
cbf858aa KZ |
67 | $TS_CMD_MOUNT -oloop "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG |
68 | $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
2edb8525 SB |
69 | udevadm settle |
70 | ts_log "Success" | |
71 | ts_finalize_subtest | |
72 | ||
73 | ts_init_subtest "dev-loop" | |
74 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
75 | LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show $BACKFILE 2>> $TS_OUTPUT ) | |
cbf858aa KZ |
76 | $TS_CMD_MOUNT $LODEV "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG |
77 | verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
78 | $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
79 | $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG | |
2edb8525 SB |
80 | udevadm settle |
81 | ts_log "Success" | |
82 | ts_finalize_subtest | |
83 | ||
84 | ts_init_subtest "o-loop-val" | |
9212134d KZ |
85 | if [ "$TS_PARALLEL" = "yes" ]; then |
86 | # There is a race in $LODEV is usage | |
87 | ts_skip_subtest "no-reentrant" | |
88 | else | |
89 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
90 | LODEV=$( $TS_CMD_LOSETUP --find 2>> $TS_OUTPUT ) | |
cbf858aa KZ |
91 | $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG |
92 | verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
93 | $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
9212134d KZ |
94 | udevadm settle |
95 | ts_log "Success" | |
96 | ts_finalize_subtest | |
97 | fi | |
2edb8525 SB |
98 | |
99 | ts_init_subtest "reuse" | |
100 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
101 | LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show "$BACKFILE" 2>> $TS_OUTPUT ) | |
cbf858aa KZ |
102 | $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG |
103 | verify_mount_dev "$LODEV" "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
104 | $TS_CMD_UMOUNT "$TS_MOUNTPOINT" >> $TS_OUTPUT 2>> $TS_ERRLOG | |
105 | $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG | |
2edb8525 SB |
106 | udevadm settle |
107 | ts_log "Success" | |
108 | ts_finalize_subtest | |
109 | ||
110 | ts_init_subtest "conflict" | |
111 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | |
112 | LODEV=$( $TS_CMD_LOSETUP --find --nooverlap --show --offset=1000 "$BACKFILE" 2>> $TS_OUTPUT ) | |
a8771dae KZ |
113 | $TS_CMD_MOUNT "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \ |
114 | | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT | |
cbf858aa | 115 | $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG |
2edb8525 SB |
116 | udevadm settle |
117 | ts_log "Success" | |
118 | ts_finalize_subtest | |
119 | ||
120 | ts_init_subtest "o-loop-val-initialized" | |
c16590f2 RM |
121 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT |
122 | LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE" 2>>$TS_OUTPUT) | |
123 | $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \ | |
124 | | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT | |
cbf858aa | 125 | $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG |
c16590f2 RM |
126 | udevadm settle |
127 | ts_log "Success" | |
128 | ts_finalize_subtest | |
2edb8525 SB |
129 | |
130 | ts_init_subtest "o-loop-val-conflict" | |
c16590f2 RM |
131 | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT |
132 | cp "$BACKFILE" "$BACKFILE"-2 | |
133 | LODEV=$( $TS_CMD_LOSETUP --show -f "$BACKFILE"-2 2>> $TS_OUTPUT) | |
134 | $TS_CMD_MOUNT -oloop=$LODEV "$BACKFILE" "$TS_MOUNTPOINT" 2>&1 \ | |
135 | | sed 's/:.*:/: <target>/; s/for .*/for <source>/' > $TS_OUTPUT | |
cbf858aa | 136 | $TS_CMD_LOSETUP --detach $LODEV >> $TS_OUTPUT 2>> $TS_ERRLOG |
c16590f2 RM |
137 | rm "$BACKFILE"-2 |
138 | udevadm settle | |
139 | ts_log "Success" | |
140 | ts_finalize_subtest | |
2edb8525 SB |
141 | |
142 | ts_log "Success" | |
143 | ts_finalize |