diff mbox series

[blktests,v2] blktests: Add _have_kernel_config_file() and _check_kernel_option()

Message ID 20220627073249.34907-1-yangx.jy@fujitsu.com (mailing list archive)
State New, archived
Headers show
Series [blktests,v2] blktests: Add _have_kernel_config_file() and _check_kernel_option() | expand

Commit Message

Xiao Yang June 27, 2022, 7:32 a.m. UTC
1) _have_kernel_config_file() sets SKIP_REASON when neither
   /boot/config* nor /proc/config.gz is available.
2) _check_kernel_option() doesn't set SKIP_RESAON when
   the specified kernel option is not defined.
3) _have_kernel_option() combines _have_kernel_config_file() and
   _check_kernel_option() and then sets SKIP_RESAON when
   _check_kernel_option() returns false.

Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com>
---
 common/multipath-over-rdma |  3 ++-
 common/rc                  | 29 ++++++++++++++++++++++++-----
 tests/nvme/039             |  3 +--
 tests/nvmeof-mp/rc         |  6 ++----
 4 files changed, 29 insertions(+), 12 deletions(-)

Comments

Shinichiro Kawasaki June 28, 2022, 8:53 a.m. UTC | #1
On Jun 27, 2022 / 15:32, Xiao Yang wrote:
> 1) _have_kernel_config_file() sets SKIP_REASON when neither
>    /boot/config* nor /proc/config.gz is available.
> 2) _check_kernel_option() doesn't set SKIP_RESAON when
>    the specified kernel option is not defined.
> 3) _have_kernel_option() combines _have_kernel_config_file() and
>    _check_kernel_option() and then sets SKIP_RESAON when
>    _check_kernel_option() returns false.
> 
> Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com>

Thanks! I've applied it with some edit to the commit message.
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..bf6cd10 100644
--- a/common/rc
+++ b/common/rc
@@ -149,25 +149,44 @@  _have_configfs() {
 	return 0
 }
 
-_have_kernel_option() {
-	local f opt=$1
-
+# Check if the specified kernel config files are available.
+_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 if the specified kernel option is defined.
+_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
 
 	return 1
 }
 
+# Combine _have_kernel_config_file() and _check_kernel_option().
+# Set SKIP_RESAON when _check_kernel_option() returns false.
+_have_kernel_option() {
+	local opt=$1
+
+	_have_kernel_config_file || return
+	if ! _check_kernel_option "$opt"; then
+		SKIP_REASON="kernel option $opt has not been enabled"
+		return 1
+	fi
+
+	return 0
+}
+
 # Check whether the version of the running kernel is greater than or equal to
 # $1.$2.$3
 _have_kver() {
diff --git a/tests/nvme/039 b/tests/nvme/039
index 85827fa..e175055 100755
--- a/tests/nvme/039
+++ b/tests/nvme/039
@@ -128,10 +128,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..2ae80c3 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