All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shivaprasad G Bhat <sbhat@linux.ibm.com>
To: nvdimm@lists.linux.dev, dan.j.williams@intel.com,
	vishal.l.verma@intel.com
Cc: aneesh.kumar@linux.ibm.com, sbhat@linux.ibm.com, vaibhav@linux.ibm.com
Subject: [RFC ndctl PATCH 1/9] test/common: Ensure to unload test modules
Date: Mon, 18 Apr 2022 12:10:03 -0500	[thread overview]
Message-ID: <165030179767.3224737.3430509039595994936.stgit@lep8c.aus.stglabs.ibm.com> (raw)
In-Reply-To: <165030175745.3224737.6985015146263991065.stgit@lep8c.aus.stglabs.ibm.com>

The _cleanup is easily missed to be called at places where trap
ERR is set, ex security.sh.

The patch moves all the modprobes into the _init in test/common
and sets the trap on exit for "any" of the reasons to invoke
_cleanup.

The patch also gracefully skips the test if the module load fails
instead of continuing, which otherwise makes the tests fail
erroneously in random places during the tests.

Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
---
 test/btt-check.sh               |    3 +--
 test/btt-errors.sh              |    3 +--
 test/btt-pad-compat.sh          |    3 +--
 test/clear.sh                   |    4 +---
 test/common                     |   12 ++++++++++++
 test/create.sh                  |    4 +---
 test/daxdev-errors.sh           |    4 +---
 test/firmware-update.sh         |    3 +--
 test/inject-error.sh            |    3 +--
 test/inject-smart.sh            |    3 +--
 test/label-compat.sh            |    4 +---
 test/max_available_extent_ns.sh |    3 +--
 test/monitor.sh                 |    3 +--
 test/multi-dax.sh               |    4 +---
 test/pfn-meta-errors.sh         |    3 +--
 test/pmem-errors.sh             |    3 +--
 test/rescan-partitions.sh       |    3 +--
 test/sector-mode.sh             |    4 +---
 test/security.sh                |    3 +--
 test/track-uuid.sh              |    3 +--
 20 files changed, 31 insertions(+), 44 deletions(-)

diff --git a/test/btt-check.sh b/test/btt-check.sh
index 65b5c58b..1039d0eb 100755
--- a/test/btt-check.sh
+++ b/test/btt-check.sh
@@ -150,10 +150,9 @@ do_tests()
 }
 
 # setup (reset nfit_test dimms, create the BTT namespace)
-modprobe nfit_test
+_init
 rc=1
 reset && create
 do_tests
 reset
-_cleanup
 exit 0
diff --git a/test/btt-errors.sh b/test/btt-errors.sh
index 18518d50..ea1a6627 100755
--- a/test/btt-errors.sh
+++ b/test/btt-errors.sh
@@ -42,7 +42,7 @@ mkdir -p $MNT
 trap 'err $LINENO cleanup' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 resetV
 
 rc=1
@@ -144,5 +144,4 @@ dd if=/dev/$blockdev of=/dev/null iflag=direct bs=4096 count=1 && err $LINENO ||
 # done, exit
 reset
 cleanup
-_cleanup
 exit 0
diff --git a/test/btt-pad-compat.sh b/test/btt-pad-compat.sh
index 005316a2..de85fec7 100755
--- a/test/btt-pad-compat.sh
+++ b/test/btt-pad-compat.sh
@@ -172,11 +172,10 @@ do_tests()
 	ns_info_wipe
 }
 
-modprobe nfit_test
+_init
 check_prereq xxd
 rc=1
 reset
 do_tests
 reset
-_cleanup
 exit 0
diff --git a/test/clear.sh b/test/clear.sh
index c4d02d54..9b785e35 100755
--- a/test/clear.sh
+++ b/test/clear.sh
@@ -13,7 +13,7 @@ check_min_kver "4.6" || do_skip "lacks clear poison support"
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -72,6 +72,4 @@ if check_min_kver "4.9"; then
 	fi
 fi
 
-_cleanup
-
 exit 0
diff --git a/test/common b/test/common
index fb487958..d3216a0c 100644
--- a/test/common
+++ b/test/common
@@ -113,6 +113,18 @@ _cleanup()
 	modprobe -r nfit_test
 }
 
+_init()
+{
+	set +e
+	modprobe nfit_test
+	if [ $? -ne 0 ]; then
+		echo "Could not load the nfit_test module."
+		exit 77
+	fi
+	set -e
+	trap _cleanup EXIT INT TERM HUP PIPE
+}
+
 # json2var
 # stdin: json
 #
diff --git a/test/create.sh b/test/create.sh
index 9a6f3733..c2fdee2e 100755
--- a/test/create.sh
+++ b/test/create.sh
@@ -14,7 +14,7 @@ check_min_kver "4.5" || do_skip "may lack namespace mode attribute"
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -40,6 +40,4 @@ eval $(echo $json | json2var)
 # free capacity for blk creation
 $NDCTL destroy-namespace -f $dev
 
-_cleanup
-
 exit 0
diff --git a/test/daxdev-errors.sh b/test/daxdev-errors.sh
index 7f797181..f32f8b80 100755
--- a/test/daxdev-errors.sh
+++ b/test/daxdev-errors.sh
@@ -14,7 +14,7 @@ check_prereq "jq"
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -71,6 +71,4 @@ if read sector len < /sys/bus/platform/devices/nfit_test.0/$busdev/$region/badbl
 fi
 [ -n "$sector" ] && echo "fail: $LINENO" && exit 1
 
-_cleanup
-
 exit 0
diff --git a/test/firmware-update.sh b/test/firmware-update.sh
index 93ce166e..1fac9dc1 100755
--- a/test/firmware-update.sh
+++ b/test/firmware-update.sh
@@ -70,11 +70,10 @@ do_tests()
 
 check_min_kver "4.16" || do_skip "may lack firmware update test handling"
 
-modprobe nfit_test
+_init
 fwupd_reset
 detect
 rc=1
 do_tests
 rm -f $image
-_cleanup
 exit 0
diff --git a/test/inject-error.sh b/test/inject-error.sh
index fd823b6c..15d0dbe8 100755
--- a/test/inject-error.sh
+++ b/test/inject-error.sh
@@ -79,10 +79,9 @@ do_tests()
 	check_status
 }
 
-modprobe nfit_test
+_init
 rc=1
 reset && create
 do_tests
 reset
-_cleanup
 exit 0
diff --git a/test/inject-smart.sh b/test/inject-smart.sh
index 046322bf..80af058a 100755
--- a/test/inject-smart.sh
+++ b/test/inject-smart.sh
@@ -167,7 +167,7 @@ do_tests()
 
 check_min_kver "4.19" || do_skip "kernel $KVER may not support smart (un)injection"
 check_prereq "jq"
-modprobe nfit_test
+_init
 rc=1
 
 jlist=$($TEST_PATH/list-smart-dimm -b $bus)
@@ -175,5 +175,4 @@ dimm="$(jq '.[]."dev"?, ."dev"?' <<< $jlist | sort | head -1 | xargs)"
 test -n "$dimm"
 
 do_tests
-_cleanup
 exit 0
diff --git a/test/label-compat.sh b/test/label-compat.sh
index 7ae4d5ef..4ccf69fa 100755
--- a/test/label-compat.sh
+++ b/test/label-compat.sh
@@ -15,7 +15,7 @@ check_prereq "jq"
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 $NDCTL disable-region -b $NFIT_TEST_BUS0 all
 $NDCTL init-labels -f -b $NFIT_TEST_BUS0 all
 
@@ -43,6 +43,4 @@ if [ -z $len ]; then
 	exit 1
 fi
 
-_cleanup
-
 exit 0
diff --git a/test/max_available_extent_ns.sh b/test/max_available_extent_ns.sh
index 47a921f5..98235424 100755
--- a/test/max_available_extent_ns.sh
+++ b/test/max_available_extent_ns.sh
@@ -31,9 +31,8 @@ do_test()
 	$NDCTL create-namespace -r $region -t pmem
 }
 
-modprobe nfit_test
+_init
 rc=1
 reset
 do_test
-_cleanup
 exit 0
diff --git a/test/monitor.sh b/test/monitor.sh
index e58c908b..10e65374 100755
--- a/test/monitor.sh
+++ b/test/monitor.sh
@@ -161,10 +161,9 @@ do_tests()
 	test_filter_dimmevent
 }
 
-modprobe nfit_test
+_init
 rc=1
 reset
 set_smart_supported_bus
 do_tests
-_cleanup
 exit 0
diff --git a/test/multi-dax.sh b/test/multi-dax.sh
index 04070adb..2b21c28c 100755
--- a/test/multi-dax.sh
+++ b/test/multi-dax.sh
@@ -16,7 +16,7 @@ trap 'err $LINENO' ERR
 ALIGN_SIZE=`getconf PAGESIZE`
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 rc=1
 
@@ -28,6 +28,4 @@ chardev1=$(echo $json | jq ". | select(.mode == \"devdax\") | .daxregion.devices
 json=$($NDCTL create-namespace -b $NFIT_TEST_BUS0 -r $region -t pmem -m devdax -a $ALIGN_SIZE -s 16M)
 chardev2=$(echo $json | jq ". | select(.mode == \"devdax\") | .daxregion.devices[0].chardev")
 
-_cleanup
-
 exit 0
diff --git a/test/pfn-meta-errors.sh b/test/pfn-meta-errors.sh
index 63148979..ccf5b7a1 100755
--- a/test/pfn-meta-errors.sh
+++ b/test/pfn-meta-errors.sh
@@ -28,7 +28,7 @@ set -e
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -67,5 +67,4 @@ if read -r sector len < "/sys/block/$raw_bdev/badblocks"; then
 	false
 fi
 
-_cleanup
 exit 0
diff --git a/test/pmem-errors.sh b/test/pmem-errors.sh
index 9a59c25d..550114ac 100755
--- a/test/pmem-errors.sh
+++ b/test/pmem-errors.sh
@@ -25,7 +25,7 @@ mkdir -p $MNT
 trap 'err $LINENO cleanup' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -110,6 +110,5 @@ echo $((start_sect + 1)) 1 > /sys/block/$blockdev/badblocks
 dd if=$MNT/$FILE of=/dev/null iflag=direct bs=4096 count=1 && err $LINENO || true
 
 cleanup
-_cleanup
 
 exit 0
diff --git a/test/rescan-partitions.sh b/test/rescan-partitions.sh
index 51bbd731..f46e17ed 100755
--- a/test/rescan-partitions.sh
+++ b/test/rescan-partitions.sh
@@ -65,11 +65,10 @@ test_mode()
 	$NDCTL destroy-namespace $dev
 }
 
-modprobe nfit_test
+_init
 rc=1
 reset
 test_mode "raw"
 test_mode "fsdax"
 test_mode "sector"
-_cleanup
 exit 0
diff --git a/test/sector-mode.sh b/test/sector-mode.sh
index f70b0f17..d4a62bf3 100755
--- a/test/sector-mode.sh
+++ b/test/sector-mode.sh
@@ -14,7 +14,7 @@ trap 'err $LINENO' ERR
 ALIGN_SIZE=`getconf PAGESIZE`
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 reset1
 
@@ -27,6 +27,4 @@ NAMESPACE=$($NDCTL create-namespace --no-autolabel -r $REGION -m sector -f -l 4K
 $NDCTL create-namespace --no-autolabel -e $NAMESPACE -m dax -f -a $ALIGN_SIZE
 $NDCTL create-namespace --no-autolabel -e $NAMESPACE -m sector -f -l 4K
 
-_cleanup
-
 exit 0
diff --git a/test/security.sh b/test/security.sh
index 34c4977b..7ae6e88c 100755
--- a/test/security.sh
+++ b/test/security.sh
@@ -246,7 +246,7 @@ if [ "$uid" -ne 0 ]; then
 	do_skip "run as root or with a sudo login shell for test to work"
 fi
 
-modprobe nfit_test
+_init
 setup
 check_prereq "keyctl"
 rc=1
@@ -275,5 +275,4 @@ test_6_load_keys
 
 test_cleanup
 post_cleanup
-_cleanup
 exit 0
diff --git a/test/track-uuid.sh b/test/track-uuid.sh
index a967d0e4..954afe7c 100755
--- a/test/track-uuid.sh
+++ b/test/track-uuid.sh
@@ -11,7 +11,7 @@ set -e
 trap 'err $LINENO' ERR
 
 # setup (reset nfit_test dimms)
-modprobe nfit_test
+_init
 reset
 
 rc=1
@@ -34,5 +34,4 @@ $NDCTL disable-namespace $dev
 uuidgen > /sys/bus/nd/devices/$dev/uuid
 $NDCTL enable-namespace $dev
 
-_cleanup
 exit 0



  reply	other threads:[~2022-04-18 17:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-18 17:09 [RFC ndctl PATCH 0/9] test: Enable PAPR test family by default Shivaprasad G Bhat
2022-04-18 17:10 ` Shivaprasad G Bhat [this message]
2022-04-18 17:10 ` [RFC ndctl PATCH 2/9] test: core: Fix module unload failures Shivaprasad G Bhat
2022-04-18 17:10 ` [RFC ndctl PATCH 3/9] test: Unload the nfit module during cleanup Shivaprasad G Bhat
2022-04-18 17:10 ` [RFC ndctl PATCH 4/9] test: Introduce skip file to skip irrelevant tests Shivaprasad G Bhat
2022-04-18 17:10 ` [RFC ndctl PATCH 5/9] test: Assign provider name based on the test family Shivaprasad G Bhat
2022-04-18 17:11 ` [RFC ndctl PATCH 6/9] test: Enable PAPR test family tests after INTEL family tests Shivaprasad G Bhat
2022-04-18 17:15 ` [ndctl v3 PATCH 7/9] test/libndctl: Enable libndctl tests on ndtest Shivaprasad G Bhat
2022-04-18 17:17 ` [ndctl v3 PATCH 8/9] test/inject-smart: Enable inject-smart " Shivaprasad G Bhat
2022-04-18 17:19 ` [ndctl v3 PATCH 9/9] test/monitor.sh: Partially skip monitor test " Shivaprasad G Bhat

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=165030179767.3224737.3430509039595994936.stgit@lep8c.aus.stglabs.ibm.com \
    --to=sbhat@linux.ibm.com \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=dan.j.williams@intel.com \
    --cc=nvdimm@lists.linux.dev \
    --cc=vaibhav@linux.ibm.com \
    --cc=vishal.l.verma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.