commit | 82d5d0998807661f43f222772df07508809c1c34 | [log] [tgz] |
---|---|---|
author | Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> | Wed Feb 26 06:20:15 2025 |
committer | Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> | Thu Mar 06 01:05:39 2025 |
tree | bf17207748dc556fbc3873cd3fc86afd1d2b6b9d | |
parent | 3fd1e8d6b03e1a0c27d425dfc2ae491b38ee81f6 [diff] |
zbd/012: avoid fio stop by I/O scheduler set failure The test case zbd/012 fails occasionally due to a sudden fio stop. At the fio stop, fio outputs the following error message: fio: unable to set io scheduler to none fio: pid=119786, err=22/file:backend.c:1485, func=iosched_switch, error=Invalid argument The test case specifies --scheduler=none option to the fio command. At the workload start, fio sets I/O scheduler of the test target device to "none" by writing to the sysfs "queue/scheduler" attribute. Subsequently, fio verifies this action by reading the attribute, expecting to find the string "[none]". However, it instead finds "[mq-deadline]", leading to the error. The test case runs another process to switch the I/O scheduler of the test target device between "none" and "mq-deadline" every 0.1 seconds. When the switch to "mq-deadline" occurs in the interim between the sysfs attribute write and read by fio, fio encounters the "[mq-deadline]" value, resulting in the error. To avoid the failure, drop the --scheduler=none option from the fio command in the test case zbd/012. I confirmed that the test case still can recreate the hang with this fix, using the kernel v6.12. Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
blktests is a test framework for the Linux kernel block layer and storage stack. It is inspired by the xfstests filesystem testing framework. It was originally written by Omar Sandoval and announced in 2017.
The dependencies are minimal, but make sure you have them installed:
Some tests require the following:
cargo install --version=^0.1 rublk
) for ublk testBuild blktests with make
. Optionally, install it to a known location with make install
(/usr/local/blktests
by default, but this can be changed by passing DESTDIR
and/or prefix
).
Add the list of block devices you want to test on in a file named config
(note: these tests are potentially destructive):
TEST_DEVS=(/dev/nvme0n1 /dev/sdb)
And as root, run the default set of tests with ./check
.
Do not add anything to the TEST_DEVS
array containing data that you want to keep.
See here for more detailed information on configuration and running tests.
New test cases are welcomed when,
The ./new
script creates a new test from a template. The generated template contains more detailed documentation. The ./new script itself can be referred to as a document. It describes variables and functions that test cases should implement, global variables that test cases can refer and coding guidelines.
Patches to linux-block@vger.kernel.org and pull requests on GitHub are both accepted. See here for more information on contributing.