@@ -68,7 +68,12 @@ _dmerror_cleanup()
_dmerror_load_error_table()
{
suspend_opt="--nolockfs"
- [ $# -gt 1 ] && [ $2 -eq 1 ] && suspend_opt=""
+
+ if [ "$1" = "lockfs" ]; then
+ suspend_opt=""
+ elif [ -n "$*" ]; then
+ suspend_opt="$*"
+ fi
$DMSETUP_PROG suspend $suspend_opt error-test
[ $? -ne 0 ] && _fail "dmsetup suspend failed"
@@ -83,7 +88,12 @@ _dmerror_load_error_table()
_dmerror_load_working_table()
{
suspend_opt="--nolockfs"
- [ $# -gt 1 ] && [ $2 -eq 1 ] && suspend_opt=""
+
+ if [ "$1" = "lockfs" ]; then
+ suspend_opt=""
+ elif [ -n "$*" ]; then
+ suspend_opt="$*"
+ fi
$DMSETUP_PROG suspend $suspend_opt error-test
[ $? -ne 0 ] && _fail "dmsetup suspend failed"
By default, _dmerror_load_*_table() suspends the dm device with "--nolockfs" option. Callers have to feed two arguments to these functions to change the behavior, with the second being 1, but the first argument is not used at all, which doesn't make sense. Fix it by checking if the first argument is "lockfs" and removing "--nolockfs" option if so, or passing all options to dmsetup. Signed-off-by: Zorro Lang <zlang@redhat.com> --- Hi, At first, I want to change the code just likes: suspend_opts="$*" But after talked with Darrick J. Wong(the original author of dmerror), he suggest to keep use --nolockfs as default: <djwong> i used --nolockfs so that dmsetup doesn't try to flush the fs on the device that we're deliberately erroring <djwong> (most probably the test is midway through its own fsync, so dmsetup trying to sync the fs will just get hung up on the io errors) So follow this suggestion, and keep --nolockfs still as the default option. Thanks, Zorro common/dmerror | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)