X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fmmp.sh;h=cb35a27fcfc8531df44fd01ad5a698839b0f89cd;hp=2ac19dfeb4f3661b5de650f49cda39747a15c70e;hb=e99739d9abf08ca8d76df281e481924fc2ae6849;hpb=c14194fd33ccb3a5a6f3899a111f72dfaad52c11 diff --git a/lustre/tests/mmp.sh b/lustre/tests/mmp.sh index 2ac19df..cb35a27 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/mmp_mark.sh $device" + return ${PIPESTATUS[0]} +} + # Reset the MMP block (if any) back to the clean state. reset_mmp_block() { local facet=$1 @@ -159,13 +168,15 @@ mmp_init() { # Otherwise, the Lustre administrator has to manually enable # this feature when the file system is unmounted. - if [ -z "$mdsfailover_HOST" ]; then + local var=${MMP_MDS}failover_HOST + if [ -z "${!var}" ]; then log "Failover is not used on MDS, enabling MMP manually..." enable_mmp $MMP_MDS $MMP_MDSDEV || \ error "failed to enable MMP on $MMP_MDSDEV on $MMP_MDS" fi - if [ -z "$ostfailover_HOST" ]; then + var=${MMP_OSS}failover_HOST + if [ -z "${!var}" ]; then log "Failover is not used on OSS, enabling MMP manually..." enable_mmp $MMP_OSS $MMP_OSTDEV || \ error "failed to enable MMP on $MMP_OSTDEV on $MMP_OSS" @@ -183,7 +194,8 @@ mmp_init() { # which did not use failover. mmp_fini() { - if [ -z "$mdsfailover_HOST" ]; then + local var=${MMP_MDS}failover_HOST + if [ -z "${!var}" ]; then log "Failover is not used on MDS, disabling MMP manually..." disable_mmp $MMP_MDS $MMP_MDSDEV || \ error "failed to disable MMP on $MMP_MDSDEV on $MMP_MDS" @@ -191,7 +203,8 @@ mmp_fini() { error "MMP was not disabled on $MMP_MDSDEV on $MMP_MDS" fi - if [ -z "$ostfailover_HOST" ]; then + var=${MMP_OSS}failover_HOST + if [ -z "${!var}" ]; then log "Failover is not used on OSS, disabling MMP manually..." disable_mmp $MMP_OSS $MMP_OSTDEV || \ error "failed to disable MMP on $MMP_OSTDEV on $MMP_OSS" @@ -348,7 +361,7 @@ mount_after_reboot() { if [ "$FAILURE_MODE" = "HARD" ]; then shutdown_facet $facet reboot_facet $facet - wait_for $facet + wait_for_facet $facet else replay_barrier_nodf $facet fi @@ -537,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]} @@ -549,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 + 1)) - 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" @@ -564,12 +569,7 @@ test_9() { 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 + 1)) - 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 @@ -592,10 +592,14 @@ test_10() { run_e2fsck $MMP_MDS_FAILOVER $MMP_MDSDEV "-fn" rc=${PIPESTATUS[0]} - if [ $rc -ne 8 ]; then - error_noexit "e2fsck $MMP_MDSDEV on $MMP_MDS_FAILOVER should return 8" + + # e2fsck is called with -n option (Open the filesystem read-only), so + # 0 (No errors) and 4 (File system errors left uncorrected) are the only + # acceptable exit codes in this case + if [ $rc -ne 0 ] && [ $rc -ne 4 ]; then + error_noexit "e2fsck $MMP_MDSDEV on $MMP_MDS_FAILOVER returned $rc" stop $MMP_MDS || return ${PIPESTATUS[0]} - [ $rc -ne 0 ] && return $rc || return 1 + return $rc fi log "Mounting $MMP_OSTDEV on $MMP_OSS..." @@ -608,10 +612,8 @@ test_10() { run_e2fsck $MMP_OSS_FAILOVER $MMP_OSTDEV "-fn" rc=${PIPESTATUS[0]} - if [ $rc -ne 8 ]; then - error_noexit "e2fsck $MMP_OSTDEV on $MMP_OSS_FAILOVER should return 8" - stop_services primary || return ${PIPESTATUS[0]} - [ $rc -ne 0 ] && return $rc || return 1 + if [ $rc -ne 0 ] && [ $rc -ne 4 ]; then + error_noexit "e2fsck $MMP_OSTDEV on $MMP_OSS_FAILOVER returned $rc" fi stop_services primary || return ${PIPESTATUS[0]} @@ -622,8 +624,6 @@ run_test 10 "e2fsck with mounted filesystem" mmp_fini FAIL_ON_ERROR=$SAVED_FAIL_ON_ERROR -equals_msg $(basename $0): test complete +complete $(basename $0) $SECONDS $MMP_RESTORE_MOUNT && setupall -[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && \ - grep -q FAIL $TESTSUITELOG && exit 1 || true -echo "$0: completed" +exit_status