]> www.infradead.org Git - users/sagi/blktests.git/log
users/sagi/blktests.git
2 years agonvme/rc: Auto convert test device size info
Daniel Wagner [Thu, 11 May 2023 14:09:43 +0000 (16:09 +0200)]
nvme/rc: Auto convert test device size info

Introduce a convert_to_mb() helper which converts the size argument
to MBytes and use in test device require function. This makes it
possible to use user input strings in future.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoblock/{001,002,027}: allow to run with built-in scsi_debug and sd_mod
Shin'ichiro Kawasaki [Wed, 26 Apr 2023 10:06:11 +0000 (19:06 +0900)]
block/{001,002,027}: allow to run with built-in scsi_debug and sd_mod

To allow the test cases run with build-in scsi_debug, replace
'_have_module scsi_debug' with _have_scsi_debug, and replace
_init_scsi_debug with _configure_scsi_debug.

Also to allow block/001 run with built-in sd_mod, replace
'_have_module sd_mod' with '_have_kernel_option BLK_DEV_SD'. When sd_mod
driver is built-in, /sys/module/sd_mod directory is not created. Then
_have_driver() can not detect availability of the driver. Instead, refer
the kernel config to check availability of the driver.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoscsi/{004,005}: allow to run with built-in scsi_debug
Shin'ichiro Kawasaki [Tue, 25 Apr 2023 11:47:44 +0000 (20:47 +0900)]
scsi/{004,005}: allow to run with built-in scsi_debug

To allow the test case run with build-in scsi_debug, replace
'_have_module scsi_debug' with _have_scsi_debug, and replace
_init_scsi_debug with _configure_scsi_debug.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/scsi_debug: introduce _configure_scsi_debug
Shin'ichiro Kawasaki [Tue, 25 Apr 2023 11:47:43 +0000 (20:47 +0900)]
common/scsi_debug: introduce _configure_scsi_debug

To set up scsi_debug devices with built-in scsi_debug module, introduce
a new helper function _configure_scsi_debug. It works in similar manner
as _init_scsi_debug which sets up scsi_debug devices with loadable
scsi_debug module.

_configure_scsi_debug takes parameters of scsi_debug devices in format
of 'key=value' as its arguments. It calls another new helper function
_scsi_debug_key_path to find sysfs files corresponding to the keys in
/sys/module/scsi_debug/parameters or /sys/bus/pseudo/drivers/scsi_debug.
When the file is found, write the value to the file.

Before setting the parameters through sysfs files, save current values
of scsi_debug parameters in ORIG_SCSI_DEBUG_PARAMS. Use the saved values
to restore parameters in _exit_scsi_debug. Do this value restore not
only for the parameters modified in _configure_scsi_debug but also for
the parameters modified by test cases.

Among the parameters, 'add_host' has special meaning to add new hosts.
Then handle it separately so that it is set at last in
_configure_scsi_debug, and restored at first in _exit_scsi_debug.

Also record the hosts which exist before _configure_scsi_debug in the
array ORIG_SCSI_DEBUG_HOSTS. Those hosts should not be used for testing,
then do not add them to SCSI_DEBUG_HOSTS.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/scsi_debug: factor out _setup_scsi_debug_vars
Shin'ichiro Kawasaki [Tue, 25 Apr 2023 11:47:42 +0000 (20:47 +0900)]
common/scsi_debug: factor out _setup_scsi_debug_vars

As a preparation to introduce a new helper function to configure
scsi_debug device with built-in scsi_debug module, factor out a part
of _init_scsi_debug to a new function _setup_scsi_debug_vars.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/scsi_debug, tests/*: re-define _have_scsi_debug
Shin'ichiro Kawasaki [Tue, 25 Apr 2023 11:47:41 +0000 (20:47 +0900)]
common/scsi_debug, tests/*: re-define _have_scsi_debug

As a preparation to adapt test cases to built-in scsi_debug module, re-
define the _have_scsi_debug function. It checks that the scsi_debug
module is built as a loadable module. Modify it to check that the
scsi_debug module is available as built-in module or loadable module.

Also replace all _have_scsi_debug calls in test cases with
"_have_module scsi_debug" so that the change of _have_scsi_debug do not
affect the test cases. Following commits will modify them to call
_have_scsi_debug, only for test cases ready to run with built-in
scsi_debug.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/rc: skip module file check if modules path does not exist
Shin'ichiro Kawasaki [Tue, 25 Apr 2023 11:47:40 +0000 (20:47 +0900)]
common/rc: skip module file check if modules path does not exist

When all of the kernel modules are built-in, /lib/modules/*/kernel path
may not exist. In this case, check for the path results in failure. Skip
the check when the path does not exist.

Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoloop/009: add test for loop partition uvents
Alyssa Ross [Thu, 30 Mar 2023 16:02:47 +0000 (16:02 +0000)]
loop/009: add test for loop partition uvents

Link: https://lore.kernel.org/r/20230320125430.55367-1-hch@lst.de/
Suggested-by: Chaitanya Kulkarni <chaitanyak@nvidia.com>
Signed-off-by: Alyssa Ross <hi@alyssa.is>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
[Shin'ichiro: added mkdir for /run/udev/rules.d]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoMerge pull request #119 from yizhanglinux/add-have-fio-check-for-nvme-045
Shin'ichiro Kawasaki [Fri, 19 May 2023 06:23:41 +0000 (15:23 +0900)]
Merge pull request #119 from yizhanglinux/add-have-fio-check-for-nvme-045

test/nvme: add missing _have_fio check for nvme/045

2 years agoMerge pull request #118 from Ablu/ldflag-cross-compile
Shin'ichiro Kawasaki [Fri, 19 May 2023 06:23:11 +0000 (15:23 +0900)]
Merge pull request #118 from Ablu/ldflag-cross-compile

src/Makefile: forward LDFLAGS to $(CC)

2 years agotest/nvme: add missing _have_fio check for nvme/045
Yi Zhang [Fri, 5 May 2023 23:29:18 +0000 (07:29 +0800)]
test/nvme: add missing _have_fio check for nvme/045

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
2 years agotests/dm: add dm test group and a test for self-map
Yu Kuai [Thu, 27 Apr 2023 02:41:26 +0000 (10:41 +0800)]
tests/dm: add dm test group and a test for self-map

Verify that reload a dm with maps to itself will fail.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
[Shin'ichiro: improved code for shellcheck, commit title and file mode]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/rc: fix kernel version parse failure
Shin'ichiro Kawasaki [Sat, 29 Apr 2023 10:55:36 +0000 (19:55 +0900)]
common/rc: fix kernel version parse failure

When kernel version numbers have postfix letters, _have_fio_ver fail to
parse the version. For example, uname -r returns "6.3.0+", it handles
"0+" as a number and fails to parse. Fix it by dropping all letters
other than numbers or period.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Link: https://lore.kernel.org/linux-block/20230501041415.49939-1-shinichiro.kawasaki@wdc.com/
2 years agoblock/{014,015,030}: don't require modular null_blk for fault-injection
Akinobu Mita [Sun, 16 Apr 2023 04:37:44 +0000 (13:37 +0900)]
block/{014,015,030}: don't require modular null_blk for fault-injection

This blktests change changes null_blk fault-injection settings to be
configured via configfs instead of module parameters.
This allows null_blk fault-injection tests to run even if the null_blk is
built-in the kernel and not built as a module.

If the null_blk does not yet support configuring fault-injection via
configfs, fall back to set up with module parameter.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
[Shin'ichiro: improved commit title]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agosrc/Makefile: forward LDFLAGS to $(CC)
Erik Schilling [Tue, 18 Apr 2023 13:27:41 +0000 (15:27 +0200)]
src/Makefile: forward LDFLAGS to $(CC)

Something external may set some special LDFLAGS. Currently those would
get ignored. Lets honor them and pass them to the compiler.

This simplifies packaging and cross-compilation.

Signed-off-by: Erik Schilling <erik.schilling@linaro.org>
2 years agonvme/039: avoid failure by error message rate limit
Shin'ichiro Kawasaki [Wed, 12 Apr 2023 08:59:23 +0000 (17:59 +0900)]
nvme/039: avoid failure by error message rate limit

The test case nvme/039 tests that expected error messages are printed
for errors injected to the nvme driver. However, the test case fails by
chance when previous test cases generate many error messages. In this
case, the kernel function pr_err_ratelimited() may suppress the error
messages that the test case expects. Also, it may print messages that
the test case does not expect, such as "blk_print_req_error: xxxx
callbacks suppressed".

To avoid the failure, make two improvements for the test case. Firstly,
wait DEFAULT_RATE_LIMIT seconds at the beginning of the test to ensure
the expected error messages are not suppressed. Secondly, exclude the
unexpected message for the error message check. Introduce a helper
function last_dmesg() for the second improvement.

Fixes: 9accb5f86670 ("tests/nvme: add tests for error logging")
Link: https://lore.kernel.org/linux-block/5vnpdeocos6k4nmh6ewh7ltqz7b6wuemzcmqflfkybejssewkh@edtqm3t4w3zv/
Reviewed-by: Alan Adamson <alan.adamson@oracle.com>
Tested-by: Alan Adamson <alan.adamson@oracle.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/049: add test for uring-passthrough
Kanchan Joshi [Thu, 13 Apr 2023 08:50:24 +0000 (14:20 +0530)]
nvme/049: add test for uring-passthrough

User can communicate to NVMe char device (/dev/ngXnY) using the
uring-passthrough interface. This test exercises some of these
communication pathways, using the 'io_uring_cmd' ioengine of fio.

Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon,fio: helper for version check
Kanchan Joshi [Thu, 13 Apr 2023 08:50:23 +0000 (14:20 +0530)]
common,fio: helper for version check

Add new helper _have_fio_ver which checks whether installed fio version
is greater than or equal to input.

Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/048: test queue count changes on reconnect
Daniel Wagner [Thu, 6 Apr 2023 08:30:50 +0000 (10:30 +0200)]
nvme/048: test queue count changes on reconnect

The target is allowed to change the number of I/O queues. Test if the
host is able to reconnect in this scenario.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
[Shin'ichiro: added _setup_nvmet and replaced spaces with tabs]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/rc: Add timeout argument parsing to _nvme_connect_subsys()
Daniel Wagner [Thu, 6 Apr 2023 08:30:49 +0000 (10:30 +0200)]
nvme/rc: Add timeout argument parsing to _nvme_connect_subsys()

Add the possiblity for tests to specify the timeout values. This makes
it possible to reduce the test runtime.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/047: Test different queue types for fabrics transports
Daniel Wagner [Wed, 29 Mar 2023 09:02:02 +0000 (11:02 +0200)]
nvme/047: Test different queue types for fabrics transports

Test if the fabrics transports are handling different queues types
correctly.

Currently, only TCP and RDMA from the fabric transport family support
this feature, so limit the test to these two.

We also issue some I/O to make sure that not just the plain connect
works. For this we have to use a file system which supports direct I/O
and hence we use a device backend.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/rc: Add parametric transport required check
Daniel Wagner [Wed, 29 Mar 2023 09:02:01 +0000 (11:02 +0200)]
nvme/rc: Add parametric transport required check

Not all transport support the same features thus we need to be able to
express this. Add a transport require check which can be runtime
parameterized.

While at it also update the existing helpers to test for trtype to with
an explicit list of transport types.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/rc: Add nr queue parser arguments to _nvme_connect_subsys()
Daniel Wagner [Wed, 29 Mar 2023 09:02:00 +0000 (11:02 +0200)]
nvme/rc: Add nr queue parser arguments to _nvme_connect_subsys()

Signed-off-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/rc: Parse optional arguments in _nvme_connect_subsys()
Daniel Wagner [Wed, 29 Mar 2023 09:01:59 +0000 (11:01 +0200)]
nvme/rc: Parse optional arguments in _nvme_connect_subsys()

Extend the nvme_connect_subsys() function to parse optional arguments.
This avoids that all test have to pass in always all arguments.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoMerge pull request #116 from yizhanglinux/add-missing-executable-mode
Shin'ichiro Kawasaki [Mon, 10 Apr 2023 11:54:55 +0000 (20:54 +0900)]
Merge pull request #116 from yizhanglinux/add-missing-executable-mode

Add missing executable mode

2 years agotests/block/013.out: remove the unused 013.out file
Yi Zhang [Fri, 31 Mar 2023 09:35:59 +0000 (05:35 -0400)]
tests/block/013.out: remove the unused 013.out file

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
2 years agotests: add the missing +x mode
Yi Zhang [Fri, 31 Mar 2023 09:34:58 +0000 (05:34 -0400)]
tests: add the missing +x mode

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
2 years agosrc/Makefile: fix number sign handling in macro
Shin'ichiro Kawasaki [Wed, 1 Mar 2023 08:03:01 +0000 (17:03 +0900)]
src/Makefile: fix number sign handling in macro

GNU make version 4.3 introduced a backward-incompatible change. The
number sign '#' now should not have preceding backslash in a macro [1].
To make macros with number signs work regardless of make versions,
assign the number sign to a variable.

[1] https://lwn.net/Articles/810071/

Reported-by: Ziyang Zhang <ZiyangZhang@linux.alibaba.com>
Link: https://lore.kernel.org/linux-block/cfccc895-5a9b-f45b-5851-74c94219d743@linux.alibaba.com/
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoblock/033: add test to cover gendisk leak
Ming Lei [Fri, 24 Feb 2023 12:45:02 +0000 (20:45 +0800)]
block/033: add test to cover gendisk leak

So far only sync ublk removal is supported, and the device's
last reference is dropped in gendisk's ->free_disk(), so it
can be used to test gendisk leak issue.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agosrc: add mini ublk source code
Ming Lei [Fri, 24 Feb 2023 12:45:01 +0000 (20:45 +0800)]
src: add mini ublk source code

Prepare for adding ublk related test:

1) ublk delete is sync removal, this way is convenient to
   blkg/queue/disk instance leak issue

2) mini ublk has two builtin target(null, loop), and loop IO is
handled by io_uring, so we can use ublk to cover part of io_uring
workloads

3) not like loop/nbd, ublk won't pre-allocate/add disk, and always
add/delete disk dynamically, this way may cover disk plug & unplug
tests

4) ublk specific test given people starts to use it, so better to
let blktest cover ublk related tests

Add mini ublk source for test purpose only, which is easy to use:

./miniublk add -t {null|loop} [-q nr_queues] [-d depth] [-n dev_id]
 default: nr_queues=2(max 4), depth=128(max 128), dev_id=-1(auto allocation)
 -t loop -f backing_file
 -t null
./miniublk del [-n dev_id] -a
 -a delete all devices, -n delete specified device
./miniublk list [-n dev_id] -a
 -a list all devices, -n list specified device, default -a

miniublk depends on liburing 2.2, adds HAVE_LIBURING for checking if
liburing 2.2 exists; also add HAVE_UBLK_HEADER for checking ublk kernel
UAPI header exits. If either of two dependencies can't be met, simply
ignore miniublk target.

Also v6.0 is the 1st linux kernel release with ublk.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/046: add test for unprivileged passthrough
Kanchan Joshi [Thu, 9 Feb 2023 09:45:41 +0000 (15:15 +0530)]
nvme/046: add test for unprivileged passthrough

Alters permissions for char-device node (/dev/ngX) and runs few
passthrough commands as a normal user to exercise nvme_cmd_allowed().

Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
[Shin'ichiro: adjusted to normal user helper functions]
Tested-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocheck, common/rc: support normal user privilege
Shin'ichiro Kawasaki [Mon, 13 Feb 2023 02:00:08 +0000 (11:00 +0900)]
check, common/rc: support normal user privilege

To run commands with normal user privilege, add a new config variable
NORMAL_USER and two helper functions _run_user and _require_normal_user.
The user name specified to NORMAL_USER is used to run the commands
specified to _run_user. The test cases which require NORMAL_USER shall
call _require_normal_user to ensure the NORMAL_USER is valid.

Tested-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoblock/032: add test to cover umount one deleted disk
Ming Lei [Wed, 8 Feb 2023 01:02:35 +0000 (09:02 +0800)]
block/032: add test to cover umount one deleted disk

disk can be disappear any time because of error handling, when
it is usually being mounted. Make sure umount can be done successfully
after disk deleting is done from error handling.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/linux-block/20230208063552.GA15030@lst.de/T/#u
[Shin'ichiro: fixed commit title and added Link tag]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoMerge pull request #111 from hreinecke/disc-log-changes
Shin'ichiro Kawasaki [Tue, 7 Feb 2023 03:56:44 +0000 (12:56 +0900)]
Merge pull request #111 from hreinecke/disc-log-changes

Update tests for discovery log page changes

2 years agoUpdate tests for discovery log page changes
Hannes Reinecke [Mon, 6 Feb 2023 14:51:42 +0000 (15:51 +0100)]
Update tests for discovery log page changes

With TP8013 the discovery log includes now a record for the
discovery subsystem itself, so we need to update the blktests
to be aware of the new discovery log page layout.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agoMerge pull request #110 from bvanassche/build-fix
Shin'ichiro Kawasaki [Fri, 3 Feb 2023 07:53:18 +0000 (16:53 +0900)]
Merge pull request #110 from bvanassche/build-fix

src/discontiguous-io.cpp: Fix the build

2 years agoMerge pull request #109 from bvanassche/polling
Shin'ichiro Kawasaki [Fri, 3 Feb 2023 07:49:55 +0000 (16:49 +0900)]
Merge pull request #109 from bvanassche/polling

tests/block/007: Rework I/O polling

2 years agosrc/discontiguous-io.cpp: Fix the build
Bart Van Assche [Thu, 2 Feb 2023 18:20:39 +0000 (10:20 -0800)]
src/discontiguous-io.cpp: Fix the build

Fix the following build error:

g++  -O2 -std=c++11 -Wall -Wextra -Wshadow -Wno-sign-compare -Werror -DHAVE_LINUX_BLKZONED_H -o discontiguous-io discontiguous-io.cpp
discontiguous-io.cpp: In function ‘void dumphex(std::ostream&, const void*, size_t)’:
discontiguous-io.cpp:92:24: error: ‘uintptr_t’ was not declared in this scope

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agotests/block/007: Rework I/O polling
Bart Van Assche [Wed, 1 Feb 2023 20:31:45 +0000 (12:31 -0800)]
tests/block/007: Rework I/O polling

Linux kernel commit a614dd228035 ("block: don't allow writing to the poll
queue attribute") makes writes into /sys/block/*/queue/io_poll a no-op.
Rework test block/007 such that it no longer uses that attribute.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agoMerge pull request #108 from igaw/fcloop
Shin'ichiro Kawasaki [Mon, 30 Jan 2023 07:06:26 +0000 (16:06 +0900)]
Merge pull request #108 from igaw/fcloop

Enable 'fc' as transport for blktests (v2)

This adds transport type 'fc' to the nvme test group.
A few of the test cases report KASAN messages and need fixes.

2 years agoMerge pull request #105 from bvanassche/master
Shin'ichiro Kawasaki [Fri, 27 Jan 2023 00:11:25 +0000 (09:11 +0900)]
Merge pull request #105 from bvanassche/master

common/null_blk: Do not pass an empty string to modprobe

2 years agocommon/null_blk: Do not pass an empty string to modprobe
Bart Van Assche [Tue, 6 Dec 2022 21:24:27 +0000 (13:24 -0800)]
common/null_blk: Do not pass an empty string to modprobe

_init_null_blk() passes an empty string as last argument to modprobe if
RUN_FOR_ZONED is false. Fix this.

Fixes: e840e1537dc6 ("config: Introduce RUN_ZONED_TESTS variable and CAN_BE_ZONED flag")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agonvme: ignore error messages when running tests
Hannes Reinecke [Tue, 30 Aug 2022 12:36:55 +0000 (14:36 +0200)]
nvme: ignore error messages when running tests

There are subtle differences in the way fc is creating associations,
causing the error messages from 'nvme connect' to be different than
on other transports. As we'll get notified anyway when 'nvme connect'
fails there is not point is specifying the error message in the response
files, so just suppress error messages here.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agonvme/rc: Enable fcloop
Hannes Reinecke [Tue, 30 Aug 2022 09:11:18 +0000 (11:11 +0200)]
nvme/rc: Enable fcloop

Add functions to allow tests to run on fcloop as a transport.

Signed-off-by: Hannes Reinecke <hare@suse.de>
[dwagner: - fixup shellcheck reports
  - addressed review feedback from Shin'ichiro]
Signed-off-by: Daniel Wagner <dwagner@suse.de>
2 years agonvme/45: do not specify 'def_traddr' and 'def_trsvcid'
Hannes Reinecke [Tue, 30 Aug 2022 09:12:35 +0000 (11:12 +0200)]
nvme/45: do not specify 'def_traddr' and 'def_trsvcid'

These are default values which will be set by the functions themselves,
so we should leave them unset to allow to pick up the correct values.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agonvme/44: do not specify 'def_traddr' and 'def_trsvcid'
Hannes Reinecke [Tue, 30 Aug 2022 09:12:35 +0000 (11:12 +0200)]
nvme/44: do not specify 'def_traddr' and 'def_trsvcid'

These are default values which will be set by the functions themselves,
so we should leave them unset to allow to pick up the correct values.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agonvme/43: do not specify 'def_traddr' and 'def_trsvcid'
Hannes Reinecke [Tue, 30 Aug 2022 09:12:35 +0000 (11:12 +0200)]
nvme/43: do not specify 'def_traddr' and 'def_trsvcid'

These are default values which will be set by the functions themselves,
so we should leave them unset to allow to pick up the correct values.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agonvme/42: do not specify 'def_traddr' and 'def_trsvcid'
Hannes Reinecke [Tue, 30 Aug 2022 09:12:35 +0000 (11:12 +0200)]
nvme/42: do not specify 'def_traddr' and 'def_trsvcid'

These are default values which will be set by the functions themselves,
so we should leave them unset to allow to pick up the correct values.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agonvme/41: do not specify 'def_traddr' and 'def_trsvcid'
Hannes Reinecke [Tue, 30 Aug 2022 09:12:35 +0000 (11:12 +0200)]
nvme/41: do not specify 'def_traddr' and 'def_trsvcid'

These are default values which will be set by the functions themselves,
so we should leave them unset to allow to pick up the correct values.

Signed-off-by: Hannes Reinecke <hare@suse.de>
2 years agoMerge pull request #107 from bvanassche/shellcheck
Shin'ichiro Kawasaki [Thu, 26 Jan 2023 10:59:15 +0000 (19:59 +0900)]
Merge pull request #107 from bvanassche/shellcheck

Fix multiple shellcheck warnings

This avoids warnings shellcheck version 0.9.0 reports. The warnings SC2004, SC2319 and SC2320 are addressed. It also addresses the warning 2119 so that "make check" command runs shellcheck without an exception.

2 years agoDo not suppress any shellcheck warnings
Bart Van Assche [Wed, 25 Jan 2023 17:56:31 +0000 (09:56 -0800)]
Do not suppress any shellcheck warnings

Previous patches fixed all warnings reported by shellcheck, including
SC2119. Hence stop suppressing SC2119.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agotests/zbd/003: Do not leak the test_device() argument into _find_two_contiguous_seq_z...
Bart Van Assche [Wed, 25 Jan 2023 17:54:03 +0000 (09:54 -0800)]
tests/zbd/003: Do not leak the test_device() argument into _find_two_contiguous_seq_zones()

Prevent that the arguments of test_device() are passed to
_find_two_contiguous_seq_zones().

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agoDo not leak the test() arguments into _init_scsi_debug()
Bart Van Assche [Wed, 25 Jan 2023 17:51:01 +0000 (09:51 -0800)]
Do not leak the test() arguments into _init_scsi_debug()

Bash does not support not passing the test() arguments to
_init_scsi_debug(). Hence pass a single argument to _init_scsi_debug().

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agoReturn 1 instead of $? if a condition test or echo command fails
Bart Van Assche [Wed, 25 Jan 2023 17:46:30 +0000 (09:46 -0800)]
Return 1 instead of $? if a condition test or echo command fails

This patch suppresses the shellcheck warnings of categories SC2319 and
SC2320.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agotests/zbd/rc: Remove unnecessary $ signs
Bart Van Assche [Wed, 25 Jan 2023 17:42:52 +0000 (09:42 -0800)]
tests/zbd/rc: Remove unnecessary $ signs

Change array[$var] into array[var]. This patch suppresses several
shellcheck complaints.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
2 years agoblock/017: extend IO inflight duration
Shin'ichiro Kawasaki [Wed, 30 Nov 2022 02:40:12 +0000 (11:40 +0900)]
block/017: extend IO inflight duration

The test case block/017 often fails on slow test systems. When it runs
on QEMU and kernel with LOCKDEP, it fails around 50% by chance with
error message as follows:

block/017 (do I/O and check the inflight counter)            [failed]
    runtime  1.715s  ...  1.726s
    --- tests/block/017.out     2022-11-15 15:30:51.285717678 +0900
    +++ /home/shin/kts/kernel-test-suite/src/blktests/results/nodev/block/017.out.bad   2022-11-25 16:23:50.778747167 +0900
    @@ -6,7 +6,7 @@
     sysfs inflight reads 1
     sysfs inflight writes 1
     sysfs stat 2
    -diskstats 2
    +diskstats 1
     sysfs inflight reads 0
     sysfs inflight writes 0
    ...

The test case issues one read and one write to a null_blk device, and
checks that inflight counters reports correct numbers of inflight IOs.
To keep IOs inflight during test, it prepares null_blk device with
completion_nsec parameter 0.5 second. However, when test system is slow,
inflight counter check takes long time and the read completes before the
check. Hence the failure.

To avoid the failure, extend the inflight duration of IOs. Prepare a
null_blk device without completion_nsec parameter and measure time to
check the inflight counters. Prepare null_blk device again specifying
completion_nsec parameter 0.5 seconds plus the measured time of inflight
counter check.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
2 years agotests/nvme/039: Remove passthrough command tests
Alan Adamson [Wed, 16 Nov 2022 22:39:45 +0000 (14:39 -0800)]
tests/nvme/039: Remove passthrough command tests

Commit d7ac8dca938c ("nvme: quiet user passthrough command errors")
disabled error logging for passthrough commands so the associated
tests should be removed.

When an error logging opt-in mechanism for passthrough commands is
provided, the tests can be added back.

Signed-off-by: Alan Adamson <alan.adamson@oracle.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agonvme/012,013,035: change fio I/O size and move size definition place
Yi Zhang [Wed, 2 Nov 2022 02:57:02 +0000 (10:57 +0800)]
nvme/012,013,035: change fio I/O size and move size definition place

Change fio I/O size of nvme/012,013,035 from 950m to 900m, since recent change
increased the xfs log size and it caused fio failure with I/O size 950m.

Also add size parameter to _run_fio_verify_io. This allows to move the fio I/O
size definition from common/xfs to the test case, so that device size and fio
I/O size are both defined at single place.

Link: https://lore.kernel.org/linux-block/20221019051244.810755-1-yi.zhang@redhat.com/
Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/rc, nvme/035: add function to check TEST_DEV size requirement
Yi Zhang [Wed, 2 Nov 2022 02:57:01 +0000 (10:57 +0800)]
common/rc, nvme/035: add function to check TEST_DEV size requirement

nvme/035 has minimum TEST_DEV size requirement, add a helper function
to check it

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
[Shin'ichiro: fixed commit title and added "return 0"]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agocommon/xfs: set the minimal log size 64m during mkfs.xfs
Yi Zhang [Wed, 2 Nov 2022 02:57:00 +0000 (10:57 +0800)]
common/xfs: set the minimal log size 64m during mkfs.xfs

Update to use the new minimum xfs log size 64MB which introudced from
xfsprogs v5.19.0:

$ mkfs.xfs -l size=32m -f /dev/nvme0n1
Log size must be at least 64MB.
Usage: mkfs.xfs
/* blocksize */ [-b size=num]
/* config file */ [-c options=xxx]
/* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1,
    inobtcount=0|1,bigtime=0|1]
/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,
    (sunit=value,swidth=value|su=num,sw=num|noalign),
    sectsize=num
/* force overwrite */ [-f]
/* inode size */ [-i perblock=n|size=num,maxpct=n,attr=0|1|2,
    projid32bit=0|1,sparse=0|1,nrext64=0|1]
/* no discard */ [-K]
/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n
    sunit=value|su=num,sectsize=num,lazy-count=0|1]
/* label */ [-L label (maximum 12 characters)]
/* naming */ [-n size=num,version=2|ci,ftype=0|1]
/* no-op info only */ [-N]
/* prototype file */ [-p fname]
/* quiet */ [-q]
/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx]
/* sectorsize */ [-s size=num]
/* version */ [-V]
devicename
<devicename> is required unless -d name=xxx is given.
<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),
      xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).
<value> is xxx (512 byte blocks).

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agotests/nvme: set hostnqn after hostid uuidgen
Yi Zhang [Tue, 18 Oct 2022 13:17:58 +0000 (21:17 +0800)]
tests/nvme: set hostnqn after hostid uuidgen

hostid will not be appended to hostnqn as it was generated after set
hostnqn, so let's set hostnqn after hostid generated.

Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
2 years agoMerge pull request #102 from bvanassche/master
Shin'ichiro Kawasaki [Tue, 20 Sep 2022 09:55:57 +0000 (18:55 +0900)]
Merge pull request #102 from bvanassche/master

srp/016: Add a test that triggers RDMA hot-unplug

2 years agocommon/rc: support compressed module files
Shin'ichiro Kawasaki [Mon, 12 Sep 2022 05:46:00 +0000 (14:46 +0900)]
common/rc: support compressed module files

The commit 8017ea524367 ("common/rc: ensure modules are loadable in
_have_modules()") introduced a helper function _module_file_exists()
which assumes module files have extension ".ko". However, the assumption
is not true when module files are compressed. In this case, extensions
of modules files have abbreviations of compression algorithm such as
".ko.xz",".ko.gz" or ".ko.zstd". This results in module file existence
check failure and unexpected test skips.

Fix this by changing module file search condition to cover module file
extensions with the compression algorithm abbreviations.

Fixes: 8017ea524367 ("common/rc: ensure modules are loadable in _have_modules()")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://github.com/osandov/blktests/issues/101
3 years agosrp/016: Add a test that triggers RDMA hot-unplug
Bart Van Assche [Mon, 25 Jul 2022 20:25:19 +0000 (13:25 -0700)]
srp/016: Add a test that triggers RDMA hot-unplug

Kernel commit 8fe4ce5836e9 ("scsi: core: Fix a use-after-free"; v6.0-rc5)
fixes a kernel crash triggered by RDMA hot-unplug. This test triggers
RDMA hot-unplug and also triggers a kernel crash without the
aforementioned kernel commit.

Cc: Li Zhijian <lizhijian@fujitsu.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
3 years agonvme: add dh module requirement for tests that involve dh groups
Sagi Grimberg [Mon, 29 Aug 2022 08:36:14 +0000 (11:36 +0300)]
nvme: add dh module requirement for tests that involve dh groups

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://lore.kernel.org/linux-block/20220829083614.874878-1-sagi@grimberg.me/
3 years agoRevert "nbd/rc: load nbd module explicitly"
Shin'ichiro Kawasaki [Thu, 1 Sep 2022 02:32:17 +0000 (11:32 +0900)]
Revert "nbd/rc: load nbd module explicitly"

This reverts commit 78271b8bb8c939e1d0b9cfa3ea321a4ed06635bd.

Once I thought explicit nbd module load in nbd/rc is required due to the
commit 06a0ba866d90 ("common/rc: avoid module load in _have_driver()").
However, it was not a good solution and _have_driver() was modified
again to load module. Hence, revert explicit nbd module load in nbd/rc.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocheck,common/rc: load module in _have_driver() and unload after test
Shin'ichiro Kawasaki [Thu, 1 Sep 2022 02:19:35 +0000 (11:19 +0900)]
check,common/rc: load module in _have_driver() and unload after test

The commit 06a0ba866d90 ("common/rc: avoid module load in
_have_driver()") removed module load from _have_driver(). However, it
was pointed out no module load in _have_driver() is confusing and adds
complexity [1]. It requires explicit module loads and unloads in number
of test cases. The module unloads must be checked if unload is safe or
not. Also module load error must be handled. To avoid these complexity,
a new helper function would be required, but it will be look like the
_have_driver() with module load.

Then revert back the feature to load module in _have_driver(). To
address the issue that the commit 06a0ba866d90 tried to fix, record the
modules loaded by _have_driver() in MODULES_TO_UNLOAD array. Unload
the recorded modules after each test case processing completed. This
avoids the side-effect by the modules loaded by _have_driver().

[1] https://lore.kernel.org/linux-block/89aedf1d-ae08-adef-db29-17e5bf85d054@grimberg.me/

Fixes: 06a0ba866d90 ("common/rc: avoid module load in _have_driver()")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocheck,common/rc: move _unload_module() from common/rc to check
Shin'ichiro Kawasaki [Thu, 1 Sep 2022 09:01:00 +0000 (18:01 +0900)]
check,common/rc: move _unload_module() from common/rc to check

To use in the 'check' script in the following commit, move the helper
function _unload_module() from 'common/rc' to 'check'.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocommon,tests: rename unload_module() to _unload_module()
Shin'ichiro Kawasaki [Thu, 1 Sep 2022 08:55:07 +0000 (17:55 +0900)]
common,tests: rename unload_module() to _unload_module()

All helper functions in common/rc have underscore prefix except
unload_module(). Add the prefix to it.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocheck: clean up _run_test()
Shin'ichiro Kawasaki [Thu, 1 Sep 2022 02:16:58 +0000 (11:16 +0900)]
check: clean up _run_test()

Avoid duplicated declarations and returns of local variable 'ret' in
_run_test(). This is a preparation for a following commit.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocommon,tests: replace _have_modules() with _have_module()
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:53 +0000 (09:11 +0900)]
common,tests: replace _have_modules() with _have_module()

The helper functions _have_modules() and _have_driver() have similar
roles, but they take different number of arguments. The former takes
multiple module names and the latter takes single module name. To make
their usage consistent, modify _have_modules() to _have_module() to take
single argument. This improves readability by checking one module per
line.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agosrp/rc: allow test with built-in sd_mod and sg drivers
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:52 +0000 (09:11 +0900)]
srp/rc: allow test with built-in sd_mod and sg drivers

The srp test group can be executed with built-in sd_mod and sg drivers.
Check the drivers with _have_driver() in place of _have_modules.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agoblock/001: use _have_driver() in place of _have_modules()
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:51 +0000 (09:11 +0900)]
block/001: use _have_driver() in place of _have_modules()

The drivers sd_mod and sr_mod do not need to be loadable. Replace the
check with _have_driver() and allow test with built-in modules.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocommon/rc: ensure modules are loadable in _have_modules()
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:50 +0000 (09:11 +0900)]
common/rc: ensure modules are loadable in _have_modules()

The commit e9645877fbf0 ("common: add a helper if a driver is
available") introduced the helper function _have_driver() to check the
driver or module is available no matter whether it is a loadable module
or built-in module. It was assumed that _have_modules() whould check
that specified modules are loadable and not built-in.

However, the function _have_modules() returns true even if the specified
modules are built-in and not loadable. This causes failures of some test
cases on test system with built-in modules such as nbd/004. It also
means that _have_modules() and _have_driver() have same functionality.

To avoid the unexpected failures, fix _have_modules() to return false
when the specified modules are built-in. Check if loadable module file
exists by searching the module file path. If the module file does not
exist, return false. Also add comments to describe the difference
between _have_driver() and _have_modules().

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
3 years agonbd/rc: load nbd module explicitly
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:49 +0000 (09:11 +0900)]
nbd/rc: load nbd module explicitly

After the commit "common/rc: avoid module load in _have_driver()",
_have_driver() no longer loads specified module. However, nbd test cases
and _have_nbd_netlink() function assume that the module is loaded by
calling _have_driver(). This causes test case failures and unexpected
skips. To fix them, load and unload modules explicitly in functions
_start_nbd_server*(), _stop_nbd_server*() and _have_nbd_netlink().

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
3 years agocommon/rc: avoid module load in _have_driver()
Shin'ichiro Kawasaki [Tue, 23 Aug 2022 00:11:48 +0000 (09:11 +0900)]
common/rc: avoid module load in _have_driver()

The helper function _have_driver() checks availability of the specified
driver, or module, regardless whether it is loadable or not. When the
driver is loadable, it loads the module for checking, but does not
unload it. This makes following test cases fail.

Such failure happens when nvmeof-mp test group is executed after nvme
test group with tcp transport. _have_driver() for tcp transport loads
nvmet and nvmet-tcp modules. nvmeof-mp test group tries to unload the
nvmet module but it fails because of dependency to the nvmet-tcp module.

To avoid the failure, do not load module in _have_driver() using -n
dry run option of the modprobe command. While at it, fix a minor problem
of modname '-' replacement. Currently, only the first '-' in modname is
replaced with '_'. Replace all '-'s.

Fixes: e9645877fbf0 ("common: add a helper if a driver is available")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
3 years agozbd/009: check mkfs.btrfs version
Shin'ichiro Kawasaki [Mon, 8 Aug 2022 01:44:07 +0000 (10:44 +0900)]
zbd/009: check mkfs.btrfs version

mkfs.btrfs versions from 5.17 to 5.18.x fail to format zoned block
devices without option '-m single' [1]. Skip the test case when
mkfs.btrfs has the versions.

[1] https://lore.kernel.org/linux-btrfs/cover.1659426744.git.wqu@suse.com/

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agoMerge pull request #99 from bvanassche/master
Shin'ichiro Kawasaki [Mon, 15 Aug 2022 08:19:45 +0000 (17:19 +0900)]
Merge pull request #99 from bvanassche/master

tests/scsi: Add tests for SCSI devices with gap zones

3 years agosrc/mount_clear_sock.c: fix compiling error
Yi Zhang [Mon, 8 Aug 2022 10:36:23 +0000 (18:36 +0800)]
src/mount_clear_sock.c: fix compiling error

<linux/mount.h> and <sys/mount.h> are known pairs of headers that conflict
See https://sourceware.org/glibc/wiki/Synchronizing_Headers
$ make
make -C src all
make[1]: Entering directory '/root/blktests/src'
cc  -O2 -Wall -Wshadow  -DHAVE_LINUX_BLKZONED_H -o mount_clear_sock mount_clear_sock.c
In file included from /usr/include/linux/fs.h:19,
                 from mount_clear_sock.c:15:
/usr/include/linux/mount.h:95:6: error: redeclaration of ‘enum fsconfig_command’
   95 | enum fsconfig_command {
      |      ^~~~~~~~~~~~~~~~
In file included from mount_clear_sock.c:11:
/usr/include/sys/mount.h:189:6: note: originally defined here
  189 | enum fsconfig_command
      |      ^~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:96:9: error: redeclaration of enumerator ‘FSCONFIG_SET_FLAG’
   96 |         FSCONFIG_SET_FLAG       = 0,    /* Set parameter, supplying no value */
      |         ^~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:191:3: note: previous definition of ‘FSCONFIG_SET_FLAG’ with type ‘enum fsconfig_command’
  191 |   FSCONFIG_SET_FLAG       = 0,    /* Set parameter, supplying no value */
      |   ^~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:97:9: error: redeclaration of enumerator ‘FSCONFIG_SET_STRING’
   97 |         FSCONFIG_SET_STRING     = 1,    /* Set parameter, supplying a string value */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:193:3: note: previous definition of ‘FSCONFIG_SET_STRING’ with type ‘enum fsconfig_command’
  193 |   FSCONFIG_SET_STRING     = 1,    /* Set parameter, supplying a string value */
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:98:9: error: redeclaration of enumerator ‘FSCONFIG_SET_BINARY’
   98 |         FSCONFIG_SET_BINARY     = 2,    /* Set parameter, supplying a binary blob value */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:195:3: note: previous definition of ‘FSCONFIG_SET_BINARY’ with type ‘enum fsconfig_command’
  195 |   FSCONFIG_SET_BINARY     = 2,    /* Set parameter, supplying a binary blob value */
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:99:9: error: redeclaration of enumerator ‘FSCONFIG_SET_PATH’
   99 |         FSCONFIG_SET_PATH       = 3,    /* Set parameter, supplying an object by path */
      |         ^~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:197:3: note: previous definition of ‘FSCONFIG_SET_PATH’ with type ‘enum fsconfig_command’
  197 |   FSCONFIG_SET_PATH       = 3,    /* Set parameter, supplying an object by path */
      |   ^~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:100:9: error: redeclaration of enumerator ‘FSCONFIG_SET_PATH_EMPTY’
  100 |         FSCONFIG_SET_PATH_EMPTY = 4,    /* Set parameter, supplying an object by (empty) path */
      |         ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:199:3: note: previous definition of ‘FSCONFIG_SET_PATH_EMPTY’ with type ‘enum fsconfig_command’
  199 |   FSCONFIG_SET_PATH_EMPTY = 4,    /* Set parameter, supplying an object by (empty) path */
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:101:9: error: redeclaration of enumerator ‘FSCONFIG_SET_FD’
  101 |         FSCONFIG_SET_FD         = 5,    /* Set parameter, supplying an object by fd */
      |         ^~~~~~~~~~~~~~~
/usr/include/sys/mount.h:201:3: note: previous definition of ‘FSCONFIG_SET_FD’ with type ‘enum fsconfig_command’
  201 |   FSCONFIG_SET_FD         = 5,    /* Set parameter, supplying an object by fd */
      |   ^~~~~~~~~~~~~~~
/usr/include/linux/mount.h:102:9: error: redeclaration of enumerator ‘FSCONFIG_CMD_CREATE’
  102 |         FSCONFIG_CMD_CREATE     = 6,    /* Invoke superblock creation */
      |         ^~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:203:3: note: previous definition of ‘FSCONFIG_CMD_CREATE’ with type ‘enum fsconfig_command’
  203 |   FSCONFIG_CMD_CREATE     = 6,    /* Invoke superblock creation */
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:103:9: error: redeclaration of enumerator ‘FSCONFIG_CMD_RECONFIGURE’
  103 |         FSCONFIG_CMD_RECONFIGURE = 7,   /* Invoke superblock reconfiguration */
      |         ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/sys/mount.h:205:3: note: previous definition of ‘FSCONFIG_CMD_RECONFIGURE’ with type ‘enum fsconfig_command’
  205 |   FSCONFIG_CMD_RECONFIGURE = 7,   /* Invoke superblock reconfiguration */
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/linux/mount.h:129:8: error: redefinition of ‘struct mount_attr’
  129 | struct mount_attr {
      |        ^~~~~~~~~~
/usr/include/sys/mount.h:161:8: note: originally defined here
  161 | struct mount_attr
      |        ^~~~~~~~~~

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agonvme/040: fix device file path
Shin'ichiro Kawasaki [Fri, 29 Jul 2022 00:15:05 +0000 (09:15 +0900)]
nvme/040: fix device file path

The test case nvme/040 performs I/O to a nvmf device file. However, it
specifies wrong path to the device file then the I/O is done to a
regular file. Hence fix the path.

Fixes: ebf197d1aea4 ("nvme: add nvmf reset/disconnect during traffic test")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
3 years agotests/zbd: Add tests for SCSI devices with gap zones
Bart Van Assche [Thu, 21 Apr 2022 17:43:15 +0000 (10:43 -0700)]
tests/zbd: Add tests for SCSI devices with gap zones

Verify that I/O on top of BTRFS or F2FS on top of zoned scsi_debug works
fine if gap zones are present.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
3 years agoblock/002: remove debugfs check while blktrace is running
Yi Zhang [Sat, 30 Jul 2022 07:58:28 +0000 (15:58 +0800)]
block/002: remove debugfs check while blktrace is running

See kernel commit: 99d055b4fd4b ("block: remove per-disk debugfs files
in blk_unregister_queue")

This fix avoids the test case failure observed since the kernel commit
0a9a25ca7843 ("block: let blkcg_gq grab request queue's refcnt").

Signed-off-by: Yi Zhang <yi.zhang@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
[Shin'ichiro: improved commit message]
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agoblock/008: avoid _offline_cpu() call in sub-shell
Shin'ichiro Kawasaki [Mon, 4 Jul 2022 11:16:38 +0000 (20:16 +0900)]
block/008: avoid _offline_cpu() call in sub-shell

The helper function _offline_cpu() sets a value to RESTORE_CPUS_ONLINE.
However, the commit bd6b882b2650 ("block/008: check CPU offline failure
due to many IRQs") put _offline_cpu() call in sub-shell, then the set
value to RESTORE_CPUS_ONLINE no longer affects function caller's
environment. This resulted in offlined CPUs not restored by _cleanup()
when the test case block/008 calls only _offline_cpu() and does not call
_online_cpu().

To fix the issue, avoid _offline_cpu() call in sub-shell. Use file
redirect to get output of _offline_cpu() instead of sub-shell execution.

Fixes: bd6b882b2650 ("block/008: check CPU offline failure due to many IRQs")
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Tested-by: Yi Zhang <yi.zhang@redhat.com>
Link: https://lore.kernel.org/linux-block/20220703180956.2922025-1-yi.zhang@redhat.com/
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agoRevert "common/cpuhotplug: allow _offline_cpu() call in sub-shell"
Shin'ichiro Kawasaki [Wed, 27 Jul 2022 01:54:54 +0000 (10:54 +0900)]
Revert "common/cpuhotplug: allow _offline_cpu() call in sub-shell"

This reverts commit 107256dc53d55f558e349e463a5a99c3bb6b4189.

The commit makes block/008 fail when multiple devices are set as
TEST_DEVS.

Link: https://lore.kernel.org/linux-block/CAHj4cs_XGXhHZsipb-BA2O_acaeBjDXa-CDfY771=a_GfEaU6w@mail.gmail.com/
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agocommon/cpuhotplug: allow _offline_cpu() call in sub-shell
Shin'ichiro Kawasaki [Tue, 19 Jul 2022 02:52:16 +0000 (11:52 +0900)]
common/cpuhotplug: allow _offline_cpu() call in sub-shell

The helper function _offline_cpu() sets a value to RESTORE_CPUS_ONLINE.
However, the commit bd6b882b2650 ("block/008: check CPU offline failure
due to many IRQs") put _offline_cpu() call in sub-shell, then the set
value to RESTORE_CPUS_ONLINE no longer affects function caller's
environment. This resulted in off-lined CPUs not restored by _cleanup()
when the test case block/008 calls only _offline_cpu() and does not call
_online_cpu().

To fix the issue, set RESTORE_CPUS_ONLINE in _have_cpu_hotplug() in
place of _offline_cpu(). _have_cpu_hotplug() is less likely to be called
in sub-shell. In same manner, do not set RESTORE_CPUS_ONLINE in
_online_cpu() either. Check that RESTORE_CPUS_ONLINE is set in
_offline_cpu() to avoid unexpected CPUs left off-lined. This check also
avoids a shellcheck warning.

Fixes: bd6b882b2650 ("block/008: check CPU offline failure due to many IRQs")
Reported-by: Yi Zhang <yi.zhang@redhat.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agonew: fix test case addition to new test group
Shin'ichiro Kawasaki [Tue, 19 Jul 2022 03:10:36 +0000 (12:10 +0900)]
new: fix test case addition to new test group

The "new" script adds script files for a new test case to the specified
test group. However, this file addition fails when the user specifies
non-existing new test group name as the target test group. The failure
happens because the "new" script assumes the target test group directory
has at least one test case, but this is not true when a new group is
created. Fix this by checking the existence of the test cases in the
target test group.

Fixes: b1e29e775872 ("Create test name from most recently used test number")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
3 years agonbd: add a module load and device connect test
Sun Ke [Tue, 19 Jul 2022 07:12:16 +0000 (15:12 +0800)]
nbd: add a module load and device connect test

This is a regression test for commit 06c4da89c24e
nbd: call genl_unregister_family() first in nbd_cleanup()

Two concurrent processes,one load and unload nbd module
cyclically, the other one connect and disconnect nbd device cyclically.
Last for 10 seconds.

Signed-off-by: Sun Ke <sunke32@huawei.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agonvme/rc: replace SKIP_REASON with SKIP_REASONS
Shin'ichiro Kawasaki [Fri, 22 Jul 2022 00:28:02 +0000 (09:28 +0900)]
nvme/rc: replace SKIP_REASON with SKIP_REASONS

The commit 5c2012764cbc (common, tests: Print multiple skip reasons)
changed the variable SKIP_REASON to the array SKIP_REASONS. The commit
e9828f1646cd ("nvme/rc: Fixup SKIP_REASON usage") changed SKIP_REASON
usage from variable to array, but did not change the name. Just add 'S'
to fix it.

Fixes: e9828f1646cd ("nvme/rc: Fixup SKIP_REASON usage")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
3 years agoMerge pull request #98 from hreinecke/auth.v7
Shin'ichiro Kawasaki [Fri, 22 Jul 2022 00:26:45 +0000 (09:26 +0900)]
Merge pull request #98 from hreinecke/auth.v7

Testsuite for nvme in-band authentication

3 years agonvme/rc: Fixup SKIP_REASON usage
Hannes Reinecke [Wed, 20 Jul 2022 16:23:26 +0000 (18:23 +0200)]
nvme/rc: Fixup SKIP_REASON usage

SKIP_REASON can't be set directly, but rather has to be appended to.

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/045: test re-authentication
Hannes Reinecke [Fri, 12 Nov 2021 14:39:21 +0000 (15:39 +0100)]
nvme/045: test re-authentication

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/044: test bi-directional authentication
Hannes Reinecke [Thu, 30 Sep 2021 14:03:24 +0000 (16:03 +0200)]
nvme/044: test bi-directional authentication

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/043: test hash and dh group variations for authenticated connections
Hannes Reinecke [Thu, 30 Sep 2021 13:52:36 +0000 (15:52 +0200)]
nvme/043: test hash and dh group variations for authenticated connections

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/042: test dhchap key types for authenticated connections
Hannes Reinecke [Thu, 30 Sep 2021 12:57:40 +0000 (14:57 +0200)]
nvme/042: test dhchap key types for authenticated connections

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/041: create authenticated connections
Hannes Reinecke [Thu, 30 Sep 2021 12:19:30 +0000 (14:19 +0200)]
nvme/041: create authenticated connections

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/rc: add more arguments to _nvme_connect_subsys()
Hannes Reinecke [Mon, 22 Nov 2021 15:22:25 +0000 (16:22 +0100)]
nvme/rc: add more arguments to _nvme_connect_subsys()

Add optional arguments for setting 'hostnqn', 'hostid', 'hostkey',
and 'ctrlkey' to _nvme_connect_subsys() to make it usable for
testing nvme in-band authentication.

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/rc: add functions for in-band authentication
Hannes Reinecke [Fri, 19 Nov 2021 12:33:42 +0000 (13:33 +0100)]
nvme/rc: add functions for in-band authentication

Add functions to enable in-band authentication.

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/rc: clear hosts directory in _cleanup_nvmet()
Hannes Reinecke [Mon, 22 Nov 2021 15:15:32 +0000 (16:15 +0100)]
nvme/rc: clear hosts directory in _cleanup_nvmet()

When clearing out the configuration we need to clear the 'hosts'
directory, too, as scripts might have added host configurations.

Signed-off-by: Hannes Reinecke <hare@suse.de>
3 years agonvme/rc: clear allowed_hosts subdirectory
Hannes Reinecke [Fri, 19 Nov 2021 12:23:34 +0000 (13:23 +0100)]
nvme/rc: clear allowed_hosts subdirectory

When removing a subsystem we need to clear out the allowed_hosts
subdirectory, otherwise removal will fail.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
3 years agonvme/rc: do not print error message when no nvme device is found
Hannes Reinecke [Fri, 19 Nov 2021 12:21:40 +0000 (13:21 +0100)]
nvme/rc: do not print error message when no nvme device is found

_find_nvme_dev() will only print an nvme device node if one is found,
so no point in printing an error message.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>