@@ -19,7 +19,8 @@ if [ $ramdisk_size -gt $max_ramdisk_size ]; then
fi
_have_legacy_dm() {
- if ! _have_kernel_option DM_MQ_DEFAULT; then
+ _have_kernel_config_file || return
+ if ! _check_kernel_option DM_MQ_DEFAULT; then
SKIP_REASON="legacy device mapper support is missing"
return 1
fi
@@ -149,19 +149,22 @@ _have_configfs() {
return 0
}
-_have_kernel_option() {
- local f opt=$1
-
+_have_kernel_config_file() {
if [[ ! -f /proc/config.gz && ! -f /boot/config-$(uname -r) ]]; then
SKIP_REASON="kernel $(uname -r) config not found"
return 1
fi
+
+ return 0
+}
+
+_check_kernel_option() {
+ local f opt=$1
+
for f in /proc/config.gz /boot/config-$(uname -r); do
[ -e "$f" ] || continue
if zgrep -q "^CONFIG_${opt}=[my]$" "$f"; then
return 0
- else
- SKIP_REASON="kernel option $opt has not been enabled"
fi
done
@@ -10,7 +10,12 @@ QUICK=1
requires() {
_nvme_requires
- _have_kernel_option NVME_TARGET_PASSTHRU
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option NVME_TARGET_PASSTHRU; then
+ SKIP_REASON="NVME_TARGET_PASSTHRU has not been enabled"
+ return 1
+ fi
}
nvme_info() {
@@ -10,7 +10,13 @@ TIMED=1
requires() {
_nvme_requires
- _have_kernel_option NVME_TARGET_PASSTHRU
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option NVME_TARGET_PASSTHRU; then
+ SKIP_REASON="NVME_TARGET_PASSTHRU has not been enabled"
+ return 1
+ fi
+
_have_fio
}
@@ -11,7 +11,13 @@ TIMED=1
requires() {
_nvme_requires
- _have_kernel_option NVME_TARGET_PASSTHRU
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option NVME_TARGET_PASSTHRU; then
+ SKIP_REASON="NVME_TARGET_PASSTHRU has not been enabled"
+ return 1
+ fi
+
_have_xfs
_have_fio
}
@@ -10,7 +10,12 @@ QUICK=1
requires() {
_nvme_requires
- _have_kernel_option NVME_TARGET_PASSTHRU
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option NVME_TARGET_PASSTHRU; then
+ SKIP_REASON="NVME_TARGET_PASSTHRU has not been enabled"
+ return 1
+ fi
}
test_device() {
@@ -9,7 +9,12 @@ DESCRIPTION="test deletion of NVMeOF passthru controllers immediately after setu
requires() {
_nvme_requires
- _have_kernel_option NVME_TARGET_PASSTHRU
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option NVME_TARGET_PASSTHRU; then
+ SKIP_REASON="NVME_TARGET_PASSTHRU has not been enabled"
+ return 1
+ fi
}
test_device() {
@@ -14,8 +14,17 @@ QUICK=1
requires() {
_have_program nvme
- _have_kernel_option FAULT_INJECTION && \
- _have_kernel_option FAULT_INJECTION_DEBUG_FS
+
+ _have_kernel_config_file || return
+ if ! _check_kernel_option FAULT_INJECTION; then
+ SKIP_REASON="FAULT_INJECTION has not been enabled"
+ return 1
+ fi
+
+ if ! _check_kernel_option FAULT_INJECTION_DEBUG_FS; then
+ SKIP_REASON="FAULT_INJECTION_DEBUG_FS has not been enabled"
+ return 1
+ fi
}
inject_unrec_read_on_read()
@@ -128,10 +137,9 @@ test_device() {
echo "Running ${TEST_NAME}"
- if _have_kernel_option NVME_VERBOSE_ERRORS; then
+ if _check_kernel_option NVME_VERBOSE_ERRORS; then
nvme_verbose_errors=true
else
- unset SKIP_REASON
nvme_verbose_errors=false
fi
@@ -14,19 +14,17 @@ ini_timeout=1
group_requires() {
local m name p required_modules
+ _have_kernel_config_file || return
# Since the nvmeof-mp tests are based on the dm-mpath driver, these
# tests are incompatible with the NVME_MULTIPATH kernel configuration
# option with multipathing enabled in the nvme_core kernel module.
- if _have_kernel_option NVME_MULTIPATH && \
+ if _check_kernel_option NVME_MULTIPATH && \
_have_module_param_value nvme_core multipath Y; then
SKIP_REASON="CONFIG_NVME_MULTIPATH has been set in .config \
and multipathing has been enabled in the nvme_core kernel module"
return
fi
- # Avoid test skip due to SKIP_REASON set by _have_kernel_option().
- unset SKIP_REASON
-
_have_configfs || return
required_modules=(
dm_multipath
@@ -53,7 +51,10 @@ and multipathing has been enabled in the nvme_core kernel module"
_have_root || return
- _have_kernel_option DM_UEVENT || return
+ if ! _check_kernel_option DM_UEVENT; then
+ SKIP_REASON="DM_UEVENT has not been enabled"
+ return 1
+ fi
# shellcheck disable=SC2043
for name in multipathd; do
@@ -70,7 +70,11 @@ group_requires() {
_have_src_program discontiguous-io || return
- _have_kernel_option DM_UEVENT || return
+ _have_kernel_config_file || return
+ if ! _check_kernel_option DM_UEVENT; then
+ SKIP_REASON="DM_UEVENT has not been enabled"
+ return 1
+ fi
for name in srp_daemon multipathd; do
if pidof "$name" >/dev/null; then
@@ -12,9 +12,14 @@
#
group_requires() {
+ _have_kernel_config_file || return
+ if ! _check_kernel_option BLK_DEV_ZONED; then
+ SKIP_REASON="BLK_DEV_ZONED has not been enabled"
+ return 1
+ fi
+
_have_root && _have_program blkzone && _have_program dd &&
- _have_kernel_option BLK_DEV_ZONED && _have_null_blk &&
- _have_module_param null_blk zoned
+ _have_null_blk && _have_module_param null_blk zoned
}
group_device_requires() {
Split _have_kernel_option() into _have_kernel_config_file() and _check_kernel_option(). 1) _have_kernel_config_file() will set SKIP_REASON when neither /boot/config* nor /proc/config.gz is available. 2) _check_kernel_option() will not set SKIP_RESAON when the specified kernel option is not defined. Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com> --- common/multipath-over-rdma | 3 ++- common/rc | 13 ++++++++----- tests/nvme/033 | 7 ++++++- tests/nvme/034 | 8 +++++++- tests/nvme/035 | 8 +++++++- tests/nvme/036 | 7 ++++++- tests/nvme/037 | 7 ++++++- tests/nvme/039 | 16 ++++++++++++---- tests/nvmeof-mp/rc | 11 ++++++----- tests/srp/rc | 6 +++++- tests/zbd/rc | 9 +++++++-- 11 files changed, 72 insertions(+), 23 deletions(-)