Whamcloud - gitweb
tests: kill debugfs on interrupted MMP test
authorAndreas Dilger <adilger@dilger.ca>
Mon, 10 Sep 2012 09:04:47 +0000 (09:04 +0000)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 17 Sep 2012 02:05:21 +0000 (22:05 -0400)
If the f_mmp test is interrupted during its test run, then it can
leave debugfs busy-looping in the background.  Since f_mmp is a
relatively long-running test, and is likely to be running during
a parallel test run, this can happen fairly often.

Set a signal trap for the f_mmp test script being killed, so that
the background debugfs command will always be killed by the test.

Signed-off-by: Andreas Dilger <adilger@dilger.ca>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
tests/f_mmp/script

index 1b0ff79..d921672 100644 (file)
@@ -19,10 +19,18 @@ if [ "$status" != 0 ] ; then
        return $status
 fi
 
+kill_debugfs() {
+       trap 0
+       PID=$(ps -o pid,command | grep -v awk |
+               awk "/debugfs -w $TMPFILE/ { print \$1 }")
+       [ "x$PID" != "x" ] && kill -9 $PID
+}
+
 # this will cause debugfs to create the $test_name.mark file once it has
 # passed the MMP startup, then continue reading input until it is killed
 MARKFILE=$test_name.new
 rm -f $MARKFILE
+trap kill_debugfs EXIT
 echo "set mmp sequence to EXT2_MMP_SEQ_FSCK..." >> $test_name.log
 ( { echo dump_mmp; echo "dump_inode <2> $MARKFILE"; cat /dev/zero; } |
        $DEBUGFS -w $TMPFILE >> $test_name.log 2>&1 & ) > /dev/null 2>&1 &
@@ -32,7 +40,7 @@ while [ ! -e $MARKFILE ]; do
 done
 rm -f $MARKFILE
 echo "kill debugfs abruptly (simulates e2fsck failure) ..." >> $test_name.log
-killall -9 debugfs >> $test_name.log
+kill_debugfs
 
 
 echo "e2fsck (should fail mmp_seq = EXT2_MMP_SEQ_FSCK) ..." >> $test_name.log