]> git.pld-linux.org Git - packages/parted.git/blame - 0020-tests-Use-wait_for_dev_to_-functions.patch
- release 6 (by relup.sh)
[packages/parted.git] / 0020-tests-Use-wait_for_dev_to_-functions.patch
CommitLineData
c886eb9d
AM
1From f72968f996372d923dbeded302395d8f08445b31 Mon Sep 17 00:00:00 2001
2From: "Brian C. Lane" <bcl@redhat.com>
3Date: Fri, 7 Aug 2015 11:43:17 -0700
4Subject: [PATCH 20/20] tests: Use wait_for_dev_to_ functions
5
6Recent changes to udev have made some long-standing problems appear more
7frequently. udev executes various actions when changes are made to
8devices. Sometimes this can result in device nodes not appearing
9immediately. Other times it can result in EBUSY being returned. This
10patch only addresses devices that are slow to appear/disappear.
11
12It is best to use the wait_for_dev_to_appear_ and
13wait_for_dev_to_disappear_ functions than to test for existance. These
14will loop and wait for up to 2 seconds for it to appear.
15
16This also changes t9041 to fail if mkfs doesn't work since using skip
17here may hide cases when the device node doesn't appear.
18
19(cherry picked from commit 1dc13965e1108ab513662450e0171c3ea3af3bd1)
20---
21 tests/t1100-busy-label.sh | 10 ++--------
22 tests/t1102-loop-label.sh | 25 +++++--------------------
23 tests/t2320-dos-extended-noclobber.sh | 1 +
24 tests/t6001-psep.sh | 4 ++--
25 tests/t6004-dm-many-partitions.sh | 6 ++----
26 tests/t6006-dm-512b-sectors.sh | 1 +
27 tests/t6100-mdraid-partitions.sh | 5 +++--
28 tests/t9041-undetected-in-use-16th-partition.sh | 2 +-
29 8 files changed, 17 insertions(+), 37 deletions(-)
30
31diff --git a/tests/t1100-busy-label.sh b/tests/t1100-busy-label.sh
32index 4e256d3..70e8ede 100755
33--- a/tests/t1100-busy-label.sh
34+++ b/tests/t1100-busy-label.sh
35@@ -27,22 +27,16 @@ dev=$(cat dev-name)
36
37 parted -s "$dev" mklabel msdos mkpart primary fat32 1 40 > out 2>&1 || fail=1
38 compare /dev/null out || fail=1
39-mkfs.vfat ${dev}1 || skip_ "mkfs.vfat failed"
40+wait_for_dev_to_appear_ ${dev}1 || fail=1
41+mkfs.vfat ${dev}1 || fail=1
42
43 mount_point="`pwd`/mnt"
44
45 # Be sure to unmount upon interrupt, failure, etc.
46 cleanup_fn_() { umount "${dev}1" > /dev/null 2>&1; }
47
48-# There's a race condition here: on udev-based systems, the partition#1
49-# device, ${dev}1 (i.e., /dev/sdd1) is not created immediately, and
50-# without some delay, this mount command would fail. Using a flash card
51-# as $dev, the loop below typically iterates 7-20 times.
52-
53 # create mount point dir. and mount the just-created partition on it
54 mkdir $mount_point || fail=1
55-i=0; while :; do test -e "${dev}1" && break; test $i = 90 && break;
56- i=$(expr $i + 1); done;
57 mount "${dev}1" $mount_point || fail=1
58
59 # now that a partition is mounted, mklabel attempt must fail
60diff --git a/tests/t1102-loop-label.sh b/tests/t1102-loop-label.sh
61index 9752002..68b9af4 100644
62--- a/tests/t1102-loop-label.sh
63+++ b/tests/t1102-loop-label.sh
64@@ -44,15 +44,9 @@ mv out o2 && sed -e "s,$dev,DEVICE,;s/ *$//" o2 > out
65
66 compare exp out || fail=1
67 parted -s $dev rm 1 || fail=1
68-if [ -e ${dev}1 ]; then
69- echo "Partition should not exist on loop device"
70- fail=1
71-fi
72+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1
73 partprobe $dev || fail=1
74-if [ -e ${dev}1 ]; then
75- echo "Partition should not exist on loop device"
76- fail=1
77-fi
78+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1
79
80 mount_point="`pwd`/mnt"
81
82@@ -80,24 +74,15 @@ umount "$mount_point"
83
84 # make sure partprobe cleans up stale partition devices
85 parted -s $dev mklabel msdos mkpart primary ext2 0% 100% || fail=1
86-if [ ! -e ${dev}1 ]; then
87- echo "Partition doesn't exist on loop device"
88- fail=1
89-fi
90+wait_for_dev_to_appear_ ${dev}1 || fail=1
91
92 mke2fs -F $dev
93 partprobe $dev || fail=1
94-if [ -e ${dev}1 ]; then
95- echo "Partition should not exist on loop device"
96- fail=1
97-fi
98+wait_for_dev_to_disappear_ ${dev}1 2 || fail=1
99
100 # make sure new loop label removes old partitions > 1
101 parted -s $dev mklabel msdos mkpart primary ext2 0% 50% mkpart primary ext2 50% 100% || fail=1
102 parted -s $dev mklabel loop || fail=1
103-if [ -e ${dev}2 ]; then
104- echo "Partition 2 not removed"
105- fail=1
106-fi
107+wait_for_dev_to_disappear_ ${dev}2 2 || fail=1
108
109 Exit $fail
110diff --git a/tests/t2320-dos-extended-noclobber.sh b/tests/t2320-dos-extended-noclobber.sh
111index 6f3dfff..bbc4f26 100644
112--- a/tests/t2320-dos-extended-noclobber.sh
113+++ b/tests/t2320-dos-extended-noclobber.sh
114@@ -32,6 +32,7 @@ scsi_dev=$(cat dev-name)
115 parted -s $scsi_dev mklabel msdos || fail=1
116 parted -s $scsi_dev mkpart extended 1 5 > out 2>&1 || fail=1
117 parted -s $scsi_dev mkpart primary 5 10 > out 2>&1 || fail=1
118+wait_for_dev_to_appear_ ${scsi_dev}1 || fail=1
119
120 # Make sure the size of the extended partition is correct.
121 # 2 sectors for 512b and 1 sector for larger. /sys/.../size is in
122diff --git a/tests/t6001-psep.sh b/tests/t6001-psep.sh
123index f15090a..4c758e8 100644
124--- a/tests/t6001-psep.sh
125+++ b/tests/t6001-psep.sh
126@@ -54,7 +54,7 @@ parted -s $dev mklabel msdos mkpart primary fat32 1m 5m > out 2>&1 || fail=1
127 compare /dev/null out || fail=1
128
129 #make sure device name is correct
130-test -e ${dev}p1 || fail=1
131+wait_for_dev_to_appear_ ${dev}p1 || fail=1
132
133 #repeat on name not ending in a digit
134 # setup: create a mapping
135@@ -66,7 +66,7 @@ parted -s $dev mklabel msdos mkpart primary fat32 1m 5m > out 2>&1 || fail=1
136 compare /dev/null out || fail=1
137
138 #make sure device name is correct
139-test -e ${dev}1 || fail=1
140+wait_for_dev_to_appear_ ${dev}1 || fail=1
141
142 if [ -n "$fail" ]; then
143 ls /dev/mapper
144diff --git a/tests/t6004-dm-many-partitions.sh b/tests/t6004-dm-many-partitions.sh
145index 8d291ef..7ebc48a 100755
146--- a/tests/t6004-dm-many-partitions.sh
147+++ b/tests/t6004-dm-many-partitions.sh
148@@ -49,10 +49,8 @@ parted -m -a min -s /dev/mapper/$dm_name mklabel gpt $cmd > /dev/null 2>&1 || fa
149
150 # Make sure all the partitions appeared under /dev/mapper/
151 for ((i=1; i<=$n_partitions; i+=1)); do
152- if [ ! -e "/dev/mapper/${dm_name}p$i" ]; then
153- fail=1
154- break
155- fi
156+ wait_for_dev_to_appear_ "/dev/mapper/${dm_name}p$i" || { fail=1; break; }
157+
158 # remove the partitions as we go, otherwise cleanup won't work.
159 dmsetup remove /dev/mapper/${dm_name}p$i
160 done
161diff --git a/tests/t6006-dm-512b-sectors.sh b/tests/t6006-dm-512b-sectors.sh
162index 31abba9..c3045af 100644
163--- a/tests/t6006-dm-512b-sectors.sh
164+++ b/tests/t6006-dm-512b-sectors.sh
165@@ -60,6 +60,7 @@ dev="/dev/mapper/$linear_"
166 # Create msdos partition table with a partition from 1MiB to 100MiB
167 parted -s $dev mklabel msdos mkpart primary ext2 1MiB 101MiB > out 2>&1 || fail=1
168 compare /dev/null out || fail=1
169+wait_for_dev_to_appear_ ${dev}1 || fail=1
170
171 # The size of the partition should be 100MiB, or 204800 512b sectors
172 p1_size=$(blockdev --getsz ${dev}1) || framework_failure
173diff --git a/tests/t6100-mdraid-partitions.sh b/tests/t6100-mdraid-partitions.sh
174index 6f08442..dbc5986 100755
175--- a/tests/t6100-mdraid-partitions.sh
176+++ b/tests/t6100-mdraid-partitions.sh
177@@ -54,13 +54,14 @@ parted -s $md_dev mklabel gpt \
178 compare /dev/null out || fail=1
179
180 # Verify that kernel has been informed about the second device.
181-grep "${md_name}p2" /proc/partitions || { fail=1; cat /proc/partitions; }
182+wait_for_dev_to_appear_ ${md_dev}p2 || { fail=1; cat /proc/partitions; }
183
184 # Remove partitions from the raid device.
185 parted -s $md_dev rm 2 rm 1 > out 2>&1 || fail=1
186 compare /dev/null out || fail=1
187
188 # Verify that kernel has been informed about those removals.
189-grep "${md_name}p[12]" /proc/partitions && { fail=1; cat /proc/partitions; }
190+wait_for_dev_to_disappear_ ${md_dev}p1 2 || { fail=1; cat /proc/partitions; }
191+wait_for_dev_to_disappear_ ${md_dev}p2 2 || { fail=1; cat /proc/partitions; }
192
193 Exit $fail
194diff --git a/tests/t9041-undetected-in-use-16th-partition.sh b/tests/t9041-undetected-in-use-16th-partition.sh
195index edaae1b..673e508 100644
196--- a/tests/t9041-undetected-in-use-16th-partition.sh
197+++ b/tests/t9041-undetected-in-use-16th-partition.sh
198@@ -72,7 +72,7 @@ wait_for_dev_to_appear_ ${scsi_dev}16 || fail_ ${scsi_dev}16 did not appear
199
200 partitions="${scsi_dev}14 ${scsi_dev}15 ${scsi_dev}16"
201 for i in $partitions; do
202- mkfs.ext3 $i || skip_ mkfs.ext3 $i failed
203+ mkfs.ext3 $i || fail=1
204 done
205
206 # be sure to unmount upon interrupt, failure, etc.
207--
2082.4.3
209
This page took 0.148247 seconds and 4 git commands to generate.