check: try reloading modules
authorDarrick J. Wong <darrick.wong@oracle.com>
Fri, 18 Sep 2020 02:06:37 +0000 (19:06 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 20 Sep 2020 17:15:20 +0000 (01:15 +0800)
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>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
README
check

diff --git a/README b/README
index d0e23fc..4af331b 100644 (file)
--- 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 5ffa877..415e0ff 100755 (executable)
--- 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 fs-$FSTYP
+                       modprobe fs-$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