Skip to content

Commit af85782

Browse files
johnpgarrykawasaki
authored andcommitted
md/002: convert to use _md_atomics_test
_md_atomics_test does even more testing than 002 does now. group_requires() already requires mdadm, so drop that also. Signed-off-by: John Garry <[email protected]> Signed-off-by: Shin'ichiro Kawasaki <[email protected]>
1 parent cefc428 commit af85782

2 files changed

Lines changed: 120 additions & 254 deletions

File tree

tests/md/002

Lines changed: 3 additions & 213 deletions
Original file line numberDiff line numberDiff line change
@@ -12,41 +12,11 @@ DESCRIPTION="test md atomic writes"
1212
QUICK=1
1313

1414
requires() {
15-
_have_kver 6 14 0
16-
_have_program mdadm
1715
_have_driver scsi_debug
18-
_have_xfs_io_atomic_write
19-
_have_driver raid0
20-
_have_driver raid1
21-
_have_driver raid10
16+
_stacked_atomic_test_requires
2217
}
2318

2419
test() {
25-
local scsi_debug_atomic_wr_max_length
26-
local scsi_debug_atomic_wr_gran
27-
local scsi_sysfs_atomic_max_bytes
28-
local scsi_sysfs_atomic_unit_max_bytes
29-
local scsi_sysfs_atomic_unit_min_bytes
30-
local md_atomic_max_bytes
31-
local md_atomic_min_bytes
32-
local md_sysfs_max_hw_sectors_kb
33-
local md_max_hw_bytes
34-
local md_chunk_size
35-
local md_chunk_size_bytes
36-
local md_sysfs_logical_block_size
37-
local md_sysfs_atomic_max_bytes
38-
local md_sysfs_atomic_unit_max_bytes
39-
local md_sysfs_atomic_unit_min_bytes
40-
local bytes_to_write
41-
local bytes_written
42-
local test_desc
43-
local scsi_0
44-
local scsi_1
45-
local scsi_2
46-
local scsi_3
47-
local scsi_dev_sysfs
48-
local md_dev
49-
local md_dev_sysfs
5020
local scsi_debug_params=(
5121
delay=0
5222
atomic_wr=1
@@ -61,188 +31,8 @@ test() {
6131
return 1
6232
fi
6333

64-
scsi_0="${SCSI_DEBUG_DEVICES[0]}"
65-
scsi_1="${SCSI_DEBUG_DEVICES[1]}"
66-
scsi_2="${SCSI_DEBUG_DEVICES[2]}"
67-
scsi_3="${SCSI_DEBUG_DEVICES[3]}"
68-
69-
scsi_dev_sysfs="/sys/block/${scsi_0}"
70-
scsi_sysfs_atomic_max_bytes=$(< "${scsi_dev_sysfs}"/queue/atomic_write_max_bytes)
71-
scsi_sysfs_atomic_unit_max_bytes=$(< "${scsi_dev_sysfs}"/queue/atomic_write_unit_max_bytes)
72-
scsi_sysfs_atomic_unit_min_bytes=$(< "${scsi_dev_sysfs}"/queue/atomic_write_unit_min_bytes)
73-
scsi_debug_atomic_wr_max_length=$(< /sys/module/scsi_debug/parameters/atomic_wr_max_length)
74-
scsi_debug_atomic_wr_gran=$(< /sys/module/scsi_debug/parameters/atomic_wr_gran)
75-
76-
for raid_level in 0 1 10; do
77-
if [ "$raid_level" = 10 ]
78-
then
79-
mdadm --create /dev/md/blktests_md --level=$raid_level \
80-
--raid-devices=4 --force --run /dev/"${scsi_0}" /dev/"${scsi_1}" \
81-
/dev/"${scsi_2}" /dev/"${scsi_3}" 2> /dev/null 1>&2
82-
else
83-
mdadm --create /dev/md/blktests_md --level=$raid_level \
84-
--raid-devices=2 --force --run \
85-
/dev/"${scsi_0}" /dev/"${scsi_1}" 2> /dev/null 1>&2
86-
fi
87-
88-
md_dev=$(readlink /dev/md/blktests_md | sed 's|\.\./||')
89-
md_dev_sysfs="/sys/devices/virtual/block/${md_dev}"
90-
91-
md_sysfs_logical_block_size=$(< "${md_dev_sysfs}"/queue/logical_block_size)
92-
md_sysfs_max_hw_sectors_kb=$(< "${md_dev_sysfs}"/queue/max_hw_sectors_kb)
93-
md_max_hw_bytes=$(( "$md_sysfs_max_hw_sectors_kb" * 1024 ))
94-
md_sysfs_atomic_max_bytes=$(< "${md_dev_sysfs}"/queue/atomic_write_max_bytes)
95-
md_sysfs_atomic_unit_max_bytes=$(< "${md_dev_sysfs}"/queue/atomic_write_unit_max_bytes)
96-
md_sysfs_atomic_unit_min_bytes=$(< "${md_dev_sysfs}"/queue/atomic_write_unit_min_bytes)
97-
md_atomic_max_bytes=$(( "$scsi_debug_atomic_wr_max_length" * "$md_sysfs_logical_block_size" ))
98-
md_atomic_min_bytes=$(( "$scsi_debug_atomic_wr_gran" * "$md_sysfs_logical_block_size" ))
99-
100-
test_desc="TEST 1 RAID $raid_level - Verify md sysfs atomic attributes matches scsi"
101-
if [ "$md_sysfs_atomic_unit_max_bytes" = "$scsi_sysfs_atomic_unit_max_bytes" ] &&
102-
[ "$md_sysfs_atomic_unit_min_bytes" = "$scsi_sysfs_atomic_unit_min_bytes" ]
103-
then
104-
echo "$test_desc - pass"
105-
else
106-
echo "$test_desc - fail $md_sysfs_atomic_unit_max_bytes - $scsi_sysfs_atomic_unit_max_bytes -" \
107-
"$md_sysfs_atomic_unit_min_bytes - $scsi_sysfs_atomic_unit_min_bytes "
108-
fi
109-
110-
test_desc="TEST 2 RAID $raid_level - Verify sysfs atomic attributes"
111-
if [ "$md_max_hw_bytes" -ge "$md_sysfs_atomic_max_bytes" ] &&
112-
[ "$md_sysfs_atomic_max_bytes" -ge "$md_sysfs_atomic_unit_max_bytes" ] &&
113-
[ "$md_sysfs_atomic_unit_max_bytes" -ge "$md_sysfs_atomic_unit_min_bytes" ]
114-
then
115-
echo "$test_desc - pass"
116-
else
117-
echo "$test_desc - fail $md_max_hw_bytes - $md_sysfs_max_hw_sectors_kb -" \
118-
"$md_sysfs_atomic_max_bytes - $md_sysfs_atomic_unit_max_bytes -" \
119-
"$md_sysfs_atomic_unit_min_bytes"
120-
fi
121-
122-
test_desc="TEST 3 RAID $raid_level - Verify md sysfs_atomic_max_bytes is less than or equal "
123-
test_desc+="scsi sysfs_atomic_max_bytes"
124-
if [ "$md_sysfs_atomic_max_bytes" -le "$scsi_sysfs_atomic_max_bytes" ]
125-
then
126-
echo "$test_desc - pass"
127-
else
128-
echo "$test_desc - fail $md_sysfs_atomic_max_bytes - $scsi_sysfs_atomic_max_bytes"
129-
fi
130-
131-
test_desc="TEST 4 RAID $raid_level - check sysfs atomic_write_unit_max_bytes <= scsi_debug atomic_wr_max_length"
132-
if (("$md_sysfs_atomic_unit_max_bytes" <= "$md_atomic_max_bytes"))
133-
then
134-
echo "$test_desc - pass"
135-
else
136-
echo "$test_desc - fail $md_sysfs_atomic_unit_max_bytes - $md_atomic_max_bytes"
137-
fi
138-
139-
test_desc="TEST 5 RAID $raid_level - check sysfs atomic_write_unit_min_bytes = scsi_debug atomic_wr_gran"
140-
if [ "$md_sysfs_atomic_unit_min_bytes" = "$md_atomic_min_bytes" ]
141-
then
142-
echo "$test_desc - pass"
143-
else
144-
echo "$test_desc - fail $md_sysfs_atomic_unit_min_bytes - $md_atomic_min_bytes"
145-
fi
146-
147-
test_desc="TEST 6 RAID $raid_level - check statx stx_atomic_write_unit_min"
148-
statx_atomic_min=$(run_xfs_io_xstat /dev/"$md_dev" "stat.atomic_write_unit_min")
149-
if [ "$statx_atomic_min" = "$md_atomic_min_bytes" ]
150-
then
151-
echo "$test_desc - pass"
152-
else
153-
echo "$test_desc - fail $statx_atomic_min - $md_atomic_min_bytes"
154-
fi
155-
156-
test_desc="TEST 7 RAID $raid_level - check statx stx_atomic_write_unit_max"
157-
statx_atomic_max=$(run_xfs_io_xstat /dev/"$md_dev" "stat.atomic_write_unit_max")
158-
if [ "$statx_atomic_max" = "$md_sysfs_atomic_unit_max_bytes" ]
159-
then
160-
echo "$test_desc - pass"
161-
else
162-
echo "$test_desc - fail $statx_atomic_max - $md_sysfs_atomic_unit_max_bytes"
163-
fi
164-
165-
test_desc="TEST 8 RAID $raid_level - perform a pwritev2 with size of sysfs_atomic_unit_max_bytes with "
166-
test_desc+="RWF_ATOMIC flag - pwritev2 should be succesful"
167-
bytes_written=$(run_xfs_io_pwritev2_atomic /dev/"$md_dev" "$md_sysfs_atomic_unit_max_bytes")
168-
if [ "$bytes_written" = "$md_sysfs_atomic_unit_max_bytes" ]
169-
then
170-
echo "$test_desc - pass"
171-
else
172-
echo "$test_desc - fail $bytes_written - $md_sysfs_atomic_unit_max_bytes"
173-
fi
174-
175-
test_desc="TEST 9 RAID $raid_level - perform a pwritev2 with size of sysfs_atomic_unit_max_bytes + 512 "
176-
test_desc+="bytes with RWF_ATOMIC flag - pwritev2 should not be succesful"
177-
bytes_to_write=$(( "${md_sysfs_atomic_unit_max_bytes}" + 512 ))
178-
bytes_written=$(run_xfs_io_pwritev2_atomic /dev/"$md_dev" "$bytes_to_write")
179-
if [ "$bytes_written" = "" ]
180-
then
181-
echo "$test_desc - pass"
182-
else
183-
echo "$test_desc - fail $bytes_written - $bytes_to_write"
184-
fi
185-
186-
test_desc="TEST 10 RAID $raid_level - perform a pwritev2 with size of sysfs_atomic_unit_min_bytes "
187-
test_desc+="with RWF_ATOMIC flag - pwritev2 should be succesful"
188-
bytes_written=$(run_xfs_io_pwritev2_atomic /dev/"$md_dev" "$md_sysfs_atomic_unit_min_bytes")
189-
if [ "$bytes_written" = "$md_sysfs_atomic_unit_min_bytes" ]
190-
then
191-
echo "$test_desc - pass"
192-
else
193-
echo "$test_desc - fail $bytes_written - $md_atomic_min_bytes"
194-
fi
195-
196-
bytes_to_write=$(( "${md_sysfs_atomic_unit_min_bytes}" - "${md_sysfs_logical_block_size}" ))
197-
test_desc="TEST 11 RAID $raid_level - perform a pwritev2 with a size of sysfs_atomic_unit_min_bytes - 512 "
198-
test_desc+="bytes with RWF_ATOMIC flag - pwritev2 should fail"
199-
if [ "$bytes_to_write" = 0 ]
200-
then
201-
echo "$test_desc - pass"
202-
else
203-
bytes_written=$(run_xfs_io_pwritev2_atomic /dev/"$md_dev" "$bytes_to_write")
204-
if [ "$bytes_written" = "" ]
205-
then
206-
echo "$test_desc - pass"
207-
else
208-
echo "$test_desc - fail $bytes_written - $bytes_to_write"
209-
fi
210-
fi
211-
212-
mdadm --stop /dev/md/blktests_md 2> /dev/null 1>&2
213-
214-
if [ "$raid_level" = 0 ] || [ "$raid_level" = 10 ]
215-
then
216-
md_chunk_size=$(( "$scsi_sysfs_atomic_unit_max_bytes" / 2048))
217-
218-
if [ "$raid_level" = 0 ]
219-
then
220-
mdadm --create /dev/md/blktests_md --level=$raid_level \
221-
--raid-devices=2 --chunk="${md_chunk_size}"K --force --run \
222-
/dev/"${scsi_0}" /dev/"${scsi_1}" 2> /dev/null 1>&2
223-
else
224-
mdadm --create /dev/md/blktests_md --level=$raid_level \
225-
--raid-devices=4 --chunk="${md_chunk_size}"K --force --run \
226-
/dev/"${scsi_0}" /dev/"${scsi_1}" \
227-
/dev/"${scsi_2}" /dev/"${scsi_3}" 2> /dev/null 1>&2
228-
fi
229-
230-
md_dev=$(readlink /dev/md/blktests_md | sed 's|\.\./||')
231-
md_dev_sysfs="/sys/devices/virtual/block/${md_dev}"
232-
md_sysfs_atomic_unit_max_bytes=$(< "${md_dev_sysfs}"/queue/atomic_write_unit_max_bytes)
233-
md_chunk_size_bytes=$(( "$md_chunk_size" * 1024))
234-
test_desc="TEST 12 RAID $raid_level - Verify chunk size "
235-
if [ "$md_chunk_size_bytes" -le "$md_sysfs_atomic_unit_max_bytes" ] && \
236-
(( md_sysfs_atomic_unit_max_bytes % md_chunk_size_bytes == 0 ))
237-
then
238-
echo "$test_desc - pass"
239-
else
240-
echo "$test_desc - fail $md_chunk_size_bytes - $md_sysfs_atomic_unit_max_bytes"
241-
fi
242-
243-
mdadm --quiet --stop /dev/md/blktests_md
244-
fi
245-
done
34+
_md_atomics_test "${SCSI_DEBUG_DEVICES[0]}" "${SCSI_DEBUG_DEVICES[1]}" \
35+
"${SCSI_DEBUG_DEVICES[2]}" "${SCSI_DEBUG_DEVICES[3]}"
24636

24737
_exit_scsi_debug
24838

0 commit comments

Comments
 (0)