dmflakey: fix environment-destroying mistakes in _cleanup_flakey
authorDarrick J. Wong <djwong@kernel.org>
Thu, 28 Oct 2021 20:17:39 +0000 (13:17 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 31 Oct 2021 14:22:27 +0000 (22:22 +0800)
_cleanup_flakey can be called even when _init_flakey hasn't been called.
For example, _require_flakey_with_error_writes does this.

Unfortunately, the patch to add support for external logs and rt devices
will "reset" the SCRATCH_LOGDEV/SCRATCH_RTDEV variables without noticing
that _init_flakey hasn't been called yet.  When this happens, those two
variables will be set to the empty string, with the result that the rest
of the test doesn't use those devices.

To fix this, only reset SCRATCH_LOGDEV/RTDEV to the "NON_FLAKEY" value
if we actually set one.

Fixes: 9c1f3149 ("dmflakey: support external log and realtime devices")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/dmflakey

index af4371a3ca34995001d558fbee71e32f7f2f6d80..52da3b100fbe453bd6bbab711da466e5d9f32edc 100644 (file)
@@ -84,11 +84,15 @@ _cleanup_flakey()
        test -n "$NON_FLAKEY_LOGDEV" && _dmsetup_remove flakey-logtest
        test -n "$NON_FLAKEY_RTDEV" && _dmsetup_remove flakey-rttest
 
        test -n "$NON_FLAKEY_LOGDEV" && _dmsetup_remove flakey-logtest
        test -n "$NON_FLAKEY_RTDEV" && _dmsetup_remove flakey-rttest
 
-       SCRATCH_LOGDEV="$NON_FLAKEY_LOGDEV"
-       unset NON_FLAKEY_LOGDEV
+       if [ -n "$NON_FLAKEY_LOGDEV" ]; then
+               SCRATCH_LOGDEV="$NON_FLAKEY_LOGDEV"
+               unset NON_FLAKEY_LOGDEV
+       fi
 
 
-       SCRATCH_RTDEV="$NON_FLAKEY_RTDEV"
-       unset NON_FLAKEY_RTDEV
+       if [ -n "$NON_FLAKEY_RTDEV" ]; then
+               SCRATCH_RTDEV="$NON_FLAKEY_RTDEV"
+               unset NON_FLAKEY_RTDEV
+       fi
 }
 
 # _load_flakey_table <table> [lockfs]
 }
 
 # _load_flakey_table <table> [lockfs]