diff mbox series

[1/2] common/dmerror: always try to resume device

Message ID 157604271185.578515.14919906805385029384.stgit@magnolia (mailing list archive)
State New, archived
Headers show
Series xfs: test xfs_scrub media scan | expand

Commit Message

Darrick J. Wong Dec. 11, 2019, 5:38 a.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

When we're reloading the error-target dm table, always resume the device
even if the reload fails because (a) we shouldn't leave dm state for the
callers to clean up and (b) the caller don't clean up the state which
just leads to the scratch filesystem hanging on the suspended dm error
device.  Resume the dm device when we're cleaning up so that cleaning up
the scratch filesystem won't hang.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 common/dmerror |   15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/common/dmerror b/common/dmerror
index 8c52e127..ca1c7335 100644
--- a/common/dmerror
+++ b/common/dmerror
@@ -44,6 +44,7 @@  _dmerror_unmount()
 
 _dmerror_cleanup()
 {
+	$DMSETUP_PROG resume error-test > /dev/null 2>&1
 	$UMOUNT_PROG $SCRATCH_MNT > /dev/null 2>&1
 	_dmsetup_remove error-test
 }
@@ -62,10 +63,13 @@  _dmerror_load_error_table()
 	[ $? -ne 0 ] && _fail  "dmsetup suspend failed"
 
 	$DMSETUP_PROG load error-test --table "$DMERROR_TABLE"
-	[ $? -ne 0 ] && _fail "dmsetup failed to load error table"
+	load_res=$?
 
 	$DMSETUP_PROG resume error-test
-	[ $? -ne 0 ] && _fail  "dmsetup resume failed"
+	resume_res=$?
+
+	[ $load_res -ne 0 ] && _fail "dmsetup failed to load error table"
+	[ $resume_res -ne 0 ] && _fail  "dmsetup resume failed"
 }
 
 _dmerror_load_working_table()
@@ -82,8 +86,11 @@  _dmerror_load_working_table()
 	[ $? -ne 0 ] && _fail  "dmsetup suspend failed"
 
 	$DMSETUP_PROG load error-test --table "$DMLINEAR_TABLE"
-	[ $? -ne 0 ] && _fail "dmsetup failed to load error table"
+	load_res=$?
 
 	$DMSETUP_PROG resume error-test
-	[ $? -ne 0 ] && _fail  "dmsetup resume failed"
+	resume_res=$?
+
+	[ $load_res -ne 0 ] && _fail "dmsetup failed to load error table"
+	[ $resume_res -ne 0 ] && _fail  "dmsetup resume failed"
 }