There have been a few issues with turning wbt on and off while IO is in flight, so add a test that just does some random rw IO and has a background thread that toggles wbt on and off. Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx> --- tests/block/027 | 47 +++++++++++++++++++++++++++++++++++++++++++++++ tests/block/027.out | 2 ++ 2 files changed, 49 insertions(+) create mode 100755 tests/block/027 create mode 100644 tests/block/027.out diff --git a/tests/block/027 b/tests/block/027 new file mode 100755 index 000000000000..dce6431172a8 --- /dev/null +++ b/tests/block/027 @@ -0,0 +1,47 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-3.0+ +# Copyright (C) 2018 Josef Bacik +# +# Turn wbt on and off in the background while writing to the disk to verify +# there's no races in the inflight counter manipulation + +. tests/block/rc + +DESCRIPTION="run a read workload and write workload together with wbt" + +requires() { + _have_fio && _have_program jq +} + +device_requires() { + _test_dev_supports_wbt +} + +toggle_wbt() { + while true + do + _test_dev_queue_set wbt_lat_usec 0 + sleep 1 + _test_dev_queue_set wbt_lat_usec 1 + sleep 1 + done +} + +test_device() { + echo "Running ${TEST_NAME}" + + local wbt_setting toggle_pid + wbt_setting=$(_test_dev_queue_get wbt_lat_usec) + + (toggle_wbt &) + toggle_pid=$! + + _run_fio --name randrw --numjobs=8 --runtime=30 --randseed=12345 \ + --ioengine=psync --readwrite=randrw --filename="$TEST_DEV" + + kill $toggle_pid > /dev/null 2>&1 + wait + _test_dev_queue_set wbt_lat_usec "$wbt_setting" + + echo "Test complete" +} diff --git a/tests/block/027.out b/tests/block/027.out new file mode 100644 index 000000000000..b03498fbc763 --- /dev/null +++ b/tests/block/027.out @@ -0,0 +1,2 @@ +Running block/027 +Test complete -- 2.14.3