Message ID | 20181212215853.29855-1-josef@toxicpanda.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | blktests: test turning wbt on and off | expand |
On Wed, Dec 12, 2018 at 04:58:53PM -0500, Josef Bacik wrote: > 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@toxicpanda.com> > --- > 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 This test doesn't use 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 Trailing whitespace. ^^^^^^^^^^^^^^^^^ > + done > +} > + > +test_device() { Since this is entirely in the block layer, this test doesn't seem like it needs a real device. Can it use null_blk instead? See block/006 for an example. > + 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" If you leave off --runtime=30 here, _run_fio will automatically use the configured TIMEOUT, and you can make this a TIMED test (i.e., set TIMED=1 after DESCRIPTION=). > + 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 >
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
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@toxicpanda.com> --- 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