From efa4829bb82ba7b7e3614df580468d78b5e44356 Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Sun, 19 Jun 2011 19:38:32 -0700 Subject: [PATCH] LU-387 mmp.sh test_9 failed The mmp.sh test_9 often fail for the script killing the e2fsck process on wrong timing, so we use some tricky way to make sure the MMP block stay in 'e2fsck' state before mounting the device. Signed-off-by: Niu Yawei Change-Id: Id8b13b67d6f0f1f0198b13bca55356ab95af1059 --- lustre/tests/mark_mmp.sh | 16 ++++++++++++++++ lustre/tests/mmp.sh | 30 ++++++++++++++---------------- 2 files changed, 30 insertions(+), 16 deletions(-) create mode 100755 lustre/tests/mark_mmp.sh diff --git a/lustre/tests/mark_mmp.sh b/lustre/tests/mark_mmp.sh new file mode 100755 index 0000000..0f196ae --- /dev/null +++ b/lustre/tests/mark_mmp.sh @@ -0,0 +1,16 @@ +#!/bin/bash +# this will cause debugfs to create the /tmp/debugfs.mark file once it has +# passed the MMP startup, then continue reading input until it is killed +MARKFILE=$(mktemp) +DEBUGFS=${DEBUGFS:-debugfs} +DEVICE=$1 + +rm -f $MARKFILE +echo "$DEBUGFS -w $DEVICE" +{ echo "dump_inode <2> $MARKFILE"; cat /dev/zero; } | $DEBUGFS -w $DEVICE & +debugfspid=$! +while [ ! -e $MARKFILE ]; do + sleep 1 +done +rm -f $MARKFILE +kill -9 $debugfspid diff --git a/lustre/tests/mmp.sh b/lustre/tests/mmp.sh index 77a5f23..6739084 100755 --- a/lustre/tests/mmp.sh +++ b/lustre/tests/mmp.sh @@ -106,6 +106,15 @@ disable_mmp() { return ${PIPESTATUS[0]} } +# Set the MMP block to 'fsck' state +mark_mmp_block() { + local facet=$1 + local device=$2 + + do_facet $facet "$LUSTRE/tests/mark_mmp.sh $device" + return ${PIPESTATUS[0]} +} + # Reset the MMP block (if any) back to the clean state. reset_mmp_block() { local facet=$1 @@ -541,10 +550,6 @@ run_test 8 "mount during e2fsck" # Test 9 - mount after aborted e2fsck (should never succeed). test_9() { - local e2fsck_pid - local mdt_mmp_check_interval - local ost_mmp_check_interval - start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS || return ${PIPESTATUS[0]} if ! start $MMP_OSS $MMP_OSTDEV $OST_MOUNT_OPTS; then local rc=${PIPESTATUS[0]} @@ -553,12 +558,8 @@ test_9() { fi stop_services primary || return ${PIPESTATUS[0]} - mdt_mmp_check_interval=$(get_mmp_check_interval $MMP_MDS $MMP_MDSDEV) - run_e2fsck $MMP_MDS_FAILOVER $MMP_MDSDEV "-fy" & - e2fsck_pid=$! - sleep $((2 * $mdt_mmp_check_interval)) - kill -s ABRT $e2fsck_pid - + mark_mmp_block $MMP_MDS $MMP_MDSDEV || return ${PIPESTATUS[0]} + log "Mounting $MMP_MDSDEV on $MMP_MDS..." if start $MMP_MDS $MMP_MDSDEV $MDS_MOUNT_OPTS; then error_noexit "mount $MMP_MDSDEV on $MMP_MDS should fail" @@ -566,14 +567,11 @@ test_9() { return 1 fi + kill -9 $debugfspid + reset_mmp_block $MMP_MDS $MMP_MDSDEV || return ${PIPESTATUS[0]} - echo - ost_mmp_check_interval=$(get_mmp_check_interval $MMP_OSS $MMP_OSTDEV) - run_e2fsck $MMP_OSS_FAILOVER $MMP_OSTDEV "-fy" & - e2fsck_pid=$! - sleep $((2 * $ost_mmp_check_interval)) - kill -s ABRT $e2fsck_pid + mark_mmp_block $MMP_OSS $MMP_OSTDEV || return ${PIPESTATUS[0]} log "Mounting $MMP_OSTDEV on $MMP_OSS..." if start $MMP_OSS $MMP_OSTDEV $OST_MOUNT_OPTS; then -- 1.6.2.2