From 29e2be05501ffb62d4d4fed6d3712869cce55152 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Tue, 10 Dec 2019 21:38:31 -0800 Subject: [PATCH] common/dmerror: always try to resume device 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 Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/dmerror | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/common/dmerror b/common/dmerror index 8c52e127..426f1e96 100644 --- a/common/dmerror +++ b/common/dmerror @@ -44,12 +44,16 @@ _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 } _dmerror_load_error_table() { + local load_res=0 + local resume_res=0 + suspend_opt="--nolockfs" if [ "$1" = "lockfs" ]; then @@ -62,14 +66,20 @@ _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() { + local load_res=0 + local resume_res=0 + suspend_opt="--nolockfs" if [ "$1" = "lockfs" ]; then @@ -82,8 +92,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" } -- 2.39.5