Skip to content

Commit f7a90dd

Browse files
calebsanderkawasaki
authored andcommitted
selftests: ublk: add integrity params test
Add test case null_04 to exercise all the different integrity params. It creates 4 different ublk devices with different combinations of integrity arguments and verifies their integrity limits via sysfs and the metadata_size utility. Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
1 parent 311dfbf commit f7a90dd

File tree

3 files changed

+177
-0
lines changed

3 files changed

+177
-0
lines changed

tools/testing/selftests/ublk/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ TEST_PROGS += test_generic_15.sh
2727
TEST_PROGS += test_null_01.sh
2828
TEST_PROGS += test_null_02.sh
2929
TEST_PROGS += test_null_03.sh
30+
TEST_PROGS += test_null_04.sh
3031
TEST_PROGS += test_loop_01.sh
3132
TEST_PROGS += test_loop_02.sh
3233
TEST_PROGS += test_loop_03.sh

tools/testing/selftests/ublk/test_common.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,16 @@ _ublk_test_top_dir()
384384
cd "$(dirname "$0")" && pwd
385385
}
386386

387+
METADATA_SIZE_PROG="$(_ublk_test_top_dir)/metadata_size"
388+
389+
_get_metadata_size()
390+
{
391+
local dev_id=$1
392+
local field=$2
393+
394+
"$METADATA_SIZE_PROG" "/dev/ublkb$dev_id" | grep "$field" | grep -o "[0-9]*"
395+
}
396+
387397
UBLK_PROG=$(_ublk_test_top_dir)/kublk
388398
UBLK_TEST_QUIET=1
389399
UBLK_TEST_SHOW_RESULT=1
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
4+
. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh
5+
6+
TID=null_04
7+
8+
_prep_test "null" "integrity params"
9+
10+
dev_id=$(_add_ublk_dev -t null -u --metadata_size 8)
11+
_check_add_dev $TID $?
12+
metadata_size=$(_get_metadata_size "$dev_id" metadata_size)
13+
if [ "$metadata_size" != 8 ]; then
14+
echo "metadata_size $metadata_size != 8"
15+
_show_result $TID 255
16+
fi
17+
pi_offset=$(_get_metadata_size "$dev_id" pi_offset)
18+
if [ "$pi_offset" != 0 ]; then
19+
echo "pi_offset $pi_offset != 0"
20+
_show_result $TID 255
21+
fi
22+
pi_tuple_size=$(_get_metadata_size "$dev_id" pi_tuple_size)
23+
if [ "$pi_tuple_size" != 0 ]; then
24+
echo "pi_tuple_size $pi_tuple_size != 0"
25+
_show_result $TID 255
26+
fi
27+
capable=$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")
28+
if [ "$capable" != 0 ]; then
29+
echo "device_is_integrity_capable $capable != 0"
30+
_show_result $TID 255
31+
fi
32+
format=$(cat "/sys/block/ublkb$dev_id/integrity/format")
33+
if [ "$format" != nop ]; then
34+
echo "format $format != nop"
35+
_show_result $TID 255
36+
fi
37+
protection_interval_bytes=$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")
38+
if [ "$protection_interval_bytes" != 512 ]; then
39+
echo "protection_interval_bytes $protection_interval_bytes != 512"
40+
_show_result $TID 255
41+
fi
42+
tag_size=$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")
43+
if [ "$tag_size" != 0 ]; then
44+
echo "tag_size $tag_size != 0"
45+
_show_result $TID 255
46+
fi
47+
_cleanup_test
48+
49+
dev_id=$(_add_ublk_dev -t null -u --integrity_capable --metadata_size 64 --pi_offset 56 --csum_type ip)
50+
_check_add_dev $TID $?
51+
metadata_size=$(_get_metadata_size "$dev_id" metadata_size)
52+
if [ "$metadata_size" != 64 ]; then
53+
echo "metadata_size $metadata_size != 64"
54+
_show_result $TID 255
55+
fi
56+
pi_offset=$(_get_metadata_size "$dev_id" pi_offset)
57+
if [ "$pi_offset" != 56 ]; then
58+
echo "pi_offset $pi_offset != 56"
59+
_show_result $TID 255
60+
fi
61+
pi_tuple_size=$(_get_metadata_size "$dev_id" pi_tuple_size)
62+
if [ "$pi_tuple_size" != 8 ]; then
63+
echo "pi_tuple_size $pi_tuple_size != 8"
64+
_show_result $TID 255
65+
fi
66+
capable=$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")
67+
if [ "$capable" != 1 ]; then
68+
echo "device_is_integrity_capable $capable != 1"
69+
_show_result $TID 255
70+
fi
71+
format=$(cat "/sys/block/ublkb$dev_id/integrity/format")
72+
if [ "$format" != T10-DIF-TYPE3-IP ]; then
73+
echo "format $format != T10-DIF-TYPE3-IP"
74+
_show_result $TID 255
75+
fi
76+
protection_interval_bytes=$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")
77+
if [ "$protection_interval_bytes" != 512 ]; then
78+
echo "protection_interval_bytes $protection_interval_bytes != 512"
79+
_show_result $TID 255
80+
fi
81+
tag_size=$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")
82+
if [ "$tag_size" != 0 ]; then
83+
echo "tag_size $tag_size != 0"
84+
_show_result $TID 255
85+
fi
86+
_cleanup_test
87+
88+
dev_id=$(_add_ublk_dev -t null -u --integrity_reftag --metadata_size 8 --csum_type t10dif)
89+
_check_add_dev $TID $?
90+
metadata_size=$(_get_metadata_size "$dev_id" metadata_size)
91+
if [ "$metadata_size" != 8 ]; then
92+
echo "metadata_size $metadata_size != 8"
93+
_show_result $TID 255
94+
fi
95+
pi_offset=$(_get_metadata_size "$dev_id" pi_offset)
96+
if [ "$pi_offset" != 0 ]; then
97+
echo "pi_offset $pi_offset != 0"
98+
_show_result $TID 255
99+
fi
100+
pi_tuple_size=$(_get_metadata_size "$dev_id" pi_tuple_size)
101+
if [ "$pi_tuple_size" != 8 ]; then
102+
echo "pi_tuple_size $pi_tuple_size != 8"
103+
_show_result $TID 255
104+
fi
105+
capable=$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")
106+
if [ "$capable" != 0 ]; then
107+
echo "device_is_integrity_capable $capable != 0"
108+
_show_result $TID 255
109+
fi
110+
format=$(cat "/sys/block/ublkb$dev_id/integrity/format")
111+
if [ "$format" != T10-DIF-TYPE1-CRC ]; then
112+
echo "format $format != T10-DIF-TYPE1-CRC"
113+
_show_result $TID 255
114+
fi
115+
protection_interval_bytes=$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")
116+
if [ "$protection_interval_bytes" != 512 ]; then
117+
echo "protection_interval_bytes $protection_interval_bytes != 512"
118+
_show_result $TID 255
119+
fi
120+
tag_size=$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")
121+
if [ "$tag_size" != 0 ]; then
122+
echo "tag_size $tag_size != 0"
123+
_show_result $TID 255
124+
fi
125+
_cleanup_test
126+
127+
dev_id=$(_add_ublk_dev -t null -u --metadata_size 16 --csum_type nvme --tag_size 8)
128+
_check_add_dev $TID $?
129+
metadata_size=$(_get_metadata_size "$dev_id" metadata_size)
130+
if [ "$metadata_size" != 16 ]; then
131+
echo "metadata_size $metadata_size != 16"
132+
_show_result $TID 255
133+
fi
134+
pi_offset=$(_get_metadata_size "$dev_id" pi_offset)
135+
if [ "$pi_offset" != 0 ]; then
136+
echo "pi_offset $pi_offset != 0"
137+
_show_result $TID 255
138+
fi
139+
pi_tuple_size=$(_get_metadata_size "$dev_id" pi_tuple_size)
140+
if [ "$pi_tuple_size" != 16 ]; then
141+
echo "pi_tuple_size $pi_tuple_size != 16"
142+
_show_result $TID 255
143+
fi
144+
capable=$(cat "/sys/block/ublkb$dev_id/integrity/device_is_integrity_capable")
145+
if [ "$capable" != 0 ]; then
146+
echo "device_is_integrity_capable $capable != 0"
147+
_show_result $TID 255
148+
fi
149+
format=$(cat "/sys/block/ublkb$dev_id/integrity/format")
150+
if [ "$format" != EXT-DIF-TYPE3-CRC64 ]; then
151+
echo "format $format != EXT-DIF-TYPE3-CRC64"
152+
_show_result $TID 255
153+
fi
154+
protection_interval_bytes=$(cat "/sys/block/ublkb$dev_id/integrity/protection_interval_bytes")
155+
if [ "$protection_interval_bytes" != 512 ]; then
156+
echo "protection_interval_bytes $protection_interval_bytes != 512"
157+
_show_result $TID 255
158+
fi
159+
tag_size=$(cat "/sys/block/ublkb$dev_id/integrity/tag_size")
160+
if [ "$tag_size" != 8 ]; then
161+
echo "tag_size $tag_size != 8"
162+
_show_result $TID 255
163+
fi
164+
_cleanup_test
165+
166+
_show_result $TID 0

0 commit comments

Comments
 (0)