[PATCH v2] dmflakey: fix environment-destroying mistakes in _cleanup_flakey

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



From: Darrick J. Wong <djwong@xxxxxxxxxx>

_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@xxxxxxxxxx>
Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>
---
v2: Add review, actually send to list this time
v1: Note: I observed this problem when running Brian Foster's new test
    "[PATCH v2] tests/xfs: test COW writeback failure when overlapping
     non-shared blocks" with an external xfs log.
---
 common/dmflakey |   12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/common/dmflakey b/common/dmflakey
index af4371a3..52da3b10 100644
--- a/common/dmflakey
+++ b/common/dmflakey
@@ -84,11 +84,15 @@ _cleanup_flakey()
 	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]



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux