@@ -11,30 +11,41 @@ DESCRIPTION="do IO on null-blk with a host tag set"
TIMED=1
requires() {
- _have_fio && _have_null_blk && _have_module_param null_blk shared_tag_bitmap
+ _have_fio
+ _have_null_blk
+ if ! _have_null_blk_feature shared_tag_bitmap; then
+ _have_module_param null_blk shared_tag_bitmap
+ fi
}
test() {
local fio_status bs=512
+ local -a opts=(nullb1 completion_nsec=0 blocksize="$bs" size=1 \
+ submit_queues="$(nproc)" memory_backed=1)
: "${TIMEOUT:=30}"
- if ! _init_null_blk nr_devices=0 shared_tag_bitmap=1; then
- echo "Loading null_blk failed"
- return 1
+ if _have_null_blk_feature shared_tag_bitmap; then
+ opts+=(shared_tag_bitmap=1)
+ else
+ # Old kernel requires shared_tag_bitmap as a module parameter
+ # instead of configfs parameter.
+ if ! _init_null_blk shared_tag_bitmap=1; then
+ echo "Loading null_blk failed"
+ return 1
+ fi
fi
- if ! _configure_null_blk nullb0 completion_nsec=0 blocksize=$bs size=1\
- submit_queues="$(nproc)" memory_backed=1 power=1; then
+ if ! _configure_null_blk "${opts[@]}" power=1; then
echo "Configuring null_blk failed"
return 1
fi
fio --verify=md5 --rw=randwrite --bs=$bs --loops=$((10**6)) \
--iodepth=64 --group_reporting --sync=1 --direct=1 \
--ioengine=libaio --runtime="${TIMEOUT}" --thread \
- --name=block-031 --filename=/dev/nullb0 \
+ --name=block-031 --filename=/dev/nullb1 \
--output="${RESULTS_DIR}/block/fio-output-031.txt" \
>>"$FULL"
fio_status=$?
- rmdir /sys/kernel/config/nullb/nullb0
+ rmdir /sys/kernel/config/nullb/nullb1
_exit_null_blk
case $fio_status in
0) echo "Passed";;
The test case block/031 sets null_blk parameter shared_tag_bitmap=1 for testing. The parameter has been set as a module parameter then null_blk driver must be loadable. However, null_blk allows to set shared_tag_bitmap as a configfs parameter since the kernel commit 7012eef520cb ("null_blk: add configfs variables for 2 options"). Then the test case now can be run with built-in null_blk driver by specifying shared_tag_bitmap through configfs. Modify the test case for that purpose. Refer null_blk feature list and check if shared_tag_bitmap can be specified through configfs. If so, specify the parameter as an option of _configure_null_blk and set it through configfs. If not, check in requires() that shared_tag_bitmap can be specified as a module parameter. Then call _init_null_blk() in test() and specify shared_tag_bitmap=1 at null_blk module load. Also change null_blk device name from nullb0 to nullb1 since the default null_blk device name nullb0 is not usable with built-in null_blk driver. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> --- tests/block/031 | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-)