diff mbox series

[blktests] blktests: Split _have_kernel_option()

Message ID 20220626142428.32874-1-yangx.jy@fujitsu.com (mailing list archive)
State New, archived
Headers show
Series [blktests] blktests: Split _have_kernel_option() | expand

Commit Message

Xiao Yang June 26, 2022, 2:24 p.m. UTC
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(-)

Comments

Shin'ichiro Kawasaki June 27, 2022, 3:57 a.m. UTC | #1
Hi Xiao, thanks for this action!

On Jun 26, 2022 / 22:24, Xiao Yang wrote:
> 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>

It's the better to keep _have_kernel_option() isn't it?  It will make this patch
smaller since many of existing _have_kernel_option() calls can be left as is.
_have_kernel_option() can be rewritten to call _have_kernel_config_file() and
_check_kernel_option(). To distinguish usages of _have_kernel_option() and
_check_kernel_option(), short comments on those functions will be helpful.
Xiao Yang June 27, 2022, 7:35 a.m. UTC | #2
On 2022/6/27 11:57, Shinichiro Kawasaki wrote:
> It's the better to keep _have_kernel_option() isn't it?  It will make this patch
> smaller since many of existing _have_kernel_option() calls can be left as is.
> _have_kernel_option() can be rewritten to call _have_kernel_config_file() and
> _check_kernel_option(). To distinguish usages of _have_kernel_option() and
> _check_kernel_option(), short comments on those functions will be helpful.

Sure. I will keep _have_kernel_option() in my v2 patch.

Best Regards,
Xiao Yang
diff mbox series

Patch

diff --git a/common/multipath-over-rdma b/common/multipath-over-rdma
index f9d7b9a..8a2108f 100644
--- a/common/multipath-over-rdma
+++ b/common/multipath-over-rdma
@@ -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
diff --git a/common/rc b/common/rc
index d18144b..df9fcb3 100644
--- a/common/rc
+++ b/common/rc
@@ -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
 
diff --git a/tests/nvme/033 b/tests/nvme/033
index 90aee81..0f58227 100755
--- a/tests/nvme/033
+++ b/tests/nvme/033
@@ -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() {
diff --git a/tests/nvme/034 b/tests/nvme/034
index f92e5e2..552c204 100755
--- a/tests/nvme/034
+++ b/tests/nvme/034
@@ -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
 }
 
diff --git a/tests/nvme/035 b/tests/nvme/035
index ee78a75..8581e0c 100755
--- a/tests/nvme/035
+++ b/tests/nvme/035
@@ -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
 }
diff --git a/tests/nvme/036 b/tests/nvme/036
index 8218c65..c747489 100755
--- a/tests/nvme/036
+++ b/tests/nvme/036
@@ -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() {
diff --git a/tests/nvme/037 b/tests/nvme/037
index fc6c213..92cff7f 100755
--- a/tests/nvme/037
+++ b/tests/nvme/037
@@ -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() {
diff --git a/tests/nvme/039 b/tests/nvme/039
index 85827fa..00c6672 100755
--- a/tests/nvme/039
+++ b/tests/nvme/039
@@ -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
 
diff --git a/tests/nvmeof-mp/rc b/tests/nvmeof-mp/rc
index 708196b..ea48c33 100755
--- a/tests/nvmeof-mp/rc
+++ b/tests/nvmeof-mp/rc
@@ -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
diff --git a/tests/srp/rc b/tests/srp/rc
index d44082a..38539cb 100755
--- a/tests/srp/rc
+++ b/tests/srp/rc
@@ -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
diff --git a/tests/zbd/rc b/tests/zbd/rc
index fea55d6..410e528 100644
--- a/tests/zbd/rc
+++ b/tests/zbd/rc
@@ -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() {