[PATCH 24/24] check: try reloading modules

Darrick J. Wong
2020-09-15T01:47:34Z

From: Darrick J. Wong <darrick.wong@oracle.com>

Optionally reload the module between each test to try to pinpoint slab
cache errors and whatnot.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
README | 3 +++
check | 9 +++++++++
2 files changed, 12 insertions(+)

diff --git a/README b/README
index d0e23fcd..4af331b4 100644
--- a/README
+++ b/README
@@ -106,6 +106,9 @@ Preparing system for tests:
- set USE_KMEMLEAK=yes to scan for memory leaks in the kernel
after every test, if the kernel supports kmemleak.
- set KEEP_DMESG=yes to keep dmesg log after test
+ - Set TEST_FS_MODULE_RELOAD=1 to unload the module and reload
+ it between test invocations. This assumes that the name of
+ the module is the same as FSTYP.

- or add a case to the switch in common/config assigning
these variables based on the hostname of your test
diff --git a/check b/check
index 5ffa8777..29306262 100755
--- a/check
+++ b/check
@@ -810,6 +810,15 @@ function run_section()
_check_dmesg || err=true
fi

+ # Reload the module after each test to check for leaks or
+ # other problems.
+ if [ -n "${TEST_FS_MODULE_RELOAD}" ]; then
+ _test_unmount 2> /dev/null
+ _scratch_unmount 2> /dev/null
+ modprobe -r $FSTYP
+ modprobe $FSTYP
+ fi
+
# Scan for memory leaks after every test so that associating
# a leak to a particular test will be as accurate as possible.
_check_kmemleak || err=true