X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fconf-sanity.sh;h=e9193ea9797e1e9d1b2177239f9a785d730689cc;hp=990b215782b3ba7e06f8b3968c55c01d41bfdb77;hb=e296c2d9f5d8ff8a7efdcef75bc3e8d379307440;hpb=c0f12e41fbe766785ea0f6bb2db3a4801a4f3ff5 diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index 990b215..e9193ea 100644 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -49,6 +49,16 @@ if [ -n "$MDSSIZE" ]; then STORED_MDSSIZE=$MDSSIZE fi +# pass "-E lazy_itable_init" to mke2fs to speed up the formatting time +for facet in MGS MDS OST; do + opts=${facet}_MKFS_OPTS + if [[ ${!opts} != *lazy_itable_init* ]]; then + eval SAVED_${facet}_MKFS_OPTS=\"${!opts}\" + eval ${facet}_MKFS_OPTS=\"${!opts} \ +--mkfsoptions='\\\"-E lazy_itable_init\\\"'\" + fi +done + init_logging # @@ -216,7 +226,7 @@ cleanup_nocli() { } cleanup() { - umount_client $MOUNT || return 200 + umount_client $MOUNT || return 200 cleanup_nocli || return $? } @@ -317,7 +327,7 @@ test_5a() { # was test_5 # cleanup may return an error from the failed # disconnects; for now I'll consider this successful # if all the modules have unloaded. - umount -d $MOUNT & + umount -d $MOUNT & UMOUNT_PID=$! sleep 6 echo "killing umount" @@ -348,7 +358,7 @@ test_5a() { # was test_5 while [ "$WAIT" -ne "$MAX_WAIT" ]; do sleep $sleep grep -q $MOUNT" " /etc/mtab || break - echo "Waiting /etc/mtab updated ... " + echo "Waiting /etc/mtab updated ... " WAIT=$(( WAIT + sleep)) done [ "$WAIT" -eq "$MAX_WAIT" ] && error "/etc/mtab is not updated in $WAIT secs" @@ -725,6 +735,7 @@ test_21d() { stop_mgs #writeconf to remove all ost2 traces for subsequent tests writeconf + start_mgs } run_test 21d "start mgs then ost and then mds" @@ -754,6 +765,8 @@ test_22() { sleep $((TIMEOUT + TIMEOUT + TIMEOUT)) fi mount_client $MOUNT + wait_osc_import_state mds ost FULL + wait_osc_import_state client ost FULL check_mount || return 41 pass @@ -767,10 +780,10 @@ test_23a() { # was test_23 stop $SINGLEMDS # force down client so that recovering mds waits for reconnect local running=$(grep -c $MOUNT /proc/mounts) || true - if [ $running -ne 0 ]; then - echo "Stopping client $MOUNT (opts: -f)" - umount -f $MOUNT - fi + if [ $running -ne 0 ]; then + echo "Stopping client $MOUNT (opts: -f)" + umount -f $MOUNT + fi # enter recovery on mds start_mds @@ -880,7 +893,7 @@ test_24a() { facet_failover fs2mds facet_failover fs2ost df - umount_client $MOUNT + umount_client $MOUNT # the MDS must remain up until last MDT stop_mds MDS=$(do_facet $SINGLEMDS "lctl get_param -n devices" | awk '($3 ~ "mdt" && $4 ~ "MDT") { print $4 }' | head -1) @@ -981,7 +994,7 @@ test_28() { set_and_check client "$TEST" "$PARAM" $FINAL || return 3 FINAL=$(($FINAL + 1)) set_and_check client "$TEST" "$PARAM" $FINAL || return 4 - umount_client $MOUNT || return 200 + umount_client $MOUNT || return 200 mount_client $MOUNT RESULT=$($TEST) if [ $RESULT -ne $FINAL ]; then @@ -1043,7 +1056,7 @@ test_29() { [ -n "$ENABLE_QUOTA" ] && { $LFS quotacheck -ug $MOUNT || error "quotacheck has failed" ; } # test new client starts deactivated - umount_client $MOUNT || return 200 + umount_client $MOUNT || return 200 mount_client $MOUNT RESULT=$(lctl get_param -n $PROC_UUID | grep DEACTIV | grep NEW) if [ -z "$RESULT" ]; then @@ -1059,7 +1072,7 @@ test_29() { # make sure it reactivates set_and_check client "lctl get_param -n $PROC_ACT" "$PARAM" $ACTV || return 6 - umount_client $MOUNT + umount_client $MOUNT stop_ost2 cleanup_nocli #writeconf to remove all ost2 traces for subsequent tests @@ -1078,7 +1091,7 @@ test_30a() { set_and_check client "$TEST" "$FSNAME.llite.max_read_ahead_whole_mb" $i || return 3 done # make sure client restart still works - umount_client $MOUNT + umount_client $MOUNT mount_client $MOUNT || return 4 [ "$($TEST)" -ne "$i" ] && error "Param didn't stick across restart $($TEST) != $i" pass @@ -1393,7 +1406,7 @@ test_34b() { touch $DIR/$tfile || return 1 stop_mds --force || return 2 - manual_umount_client --force + manual_umount_client --force rc=$? if [ $rc -ne 0 ]; then error "mtab after failed umount - rc $rc" @@ -1409,7 +1422,7 @@ test_34c() { touch $DIR/$tfile || return 1 stop_ost --force || return 2 - manual_umount_client --force + manual_umount_client --force rc=$? if [ $rc -ne 0 ]; then error "mtab after failed umount - rc $rc" @@ -1487,25 +1500,27 @@ test_35b() { # bug 18674 return 1 local at_max_saved=0 - # adaptive timeouts may prevent seeing the issue + # adaptive timeouts may prevent seeing the issue if at_is_enabled; then at_max_saved=$(at_max_get mds) at_max_set 0 mds client fi - mkdir -p $MOUNT/testdir - touch $MOUNT/testdir/test + mkdir -p $MOUNT/$tdir log "Injecting EBUSY on MDS" # Setting OBD_FAIL_MDS_RESEND=0x136 do_facet $SINGLEMDS "$LCTL set_param fail_loc=0x80000136" || return 2 - log "Stat on a test file" - stat $MOUNT/testdir/test + $LCTL set_param mdc.${FSNAME}*.stats=clear + + log "Creating a test file and stat it" + touch $MOUNT/$tdir/$tfile + stat $MOUNT/$tdir/$tfile log "Stop injecting EBUSY on MDS" do_facet $SINGLEMDS "$LCTL set_param fail_loc=0" || return 3 - rm -f $MOUNT/testdir/test + rm -f $MOUNT/$tdir/$tfile log "done" # restore adaptive timeout @@ -1513,6 +1528,8 @@ test_35b() { # bug 18674 $LCTL dk $TMP/lustre-log-$TESTNAME.log + CONNCNT=`$LCTL get_param mdc.${FSNAME}*.stats | awk '/mds_connect/{print $2}'` + # retrieve from the log if the client has ever tried to # contact the fake server after the loss of connection FAILCONN=`awk "BEGIN {ret = 0;} @@ -1532,7 +1549,14 @@ test_35b() { # bug 18674 log "ERROR: The client tried to reconnect to the failover server while the primary was busy" && \ return 5 - cleanup + # LU-290 + # When OBD_FAIL_MDS_RESEND is hit, we sleep for 2 * obd_timeout + # Reconnects are supposed to be rate limited to one every 5s + [ $CONNCNT -gt $((2 * $TIMEOUT / 5 + 1)) ] && \ + log "ERROR: Too many reconnects $CONNCNT" && \ + return 6 + + cleanup # remove nid settings writeconf } @@ -1746,6 +1770,8 @@ run_test 41a "mount mds with --nosvc and --nomgs" test_41b() { echo $MDS_MOUNT_OPTS | grep "loop" && skip " loop devices does not work with nosvc option" && return + ! combined_mgs_mds && skip "needs combined mgs device" && return 0 + stopall reformat local MDSDEV=$(mdsdevname ${SINGLEMDS//mds/}) @@ -1766,8 +1792,8 @@ test_41b() { stop_mds -f || return 203 } - run_test 41b "mount mds with --nosvc and --nomgs on first mount" + test_42() { #bug 14693 setup check_mount || return 2 @@ -1931,7 +1957,7 @@ cleanup_46a() { stop ost${count} -f || rc=$? let count=count-1 done - stop_mds || rc=$? + stop_mds || rc=$? cleanup_nocli || rc=$? #writeconf to remove all ost2 traces for subsequent tests writeconf @@ -1949,7 +1975,7 @@ test_46a() { mount_client $MOUNT || return 3 trap "cleanup_46a $OSTCOUNT" EXIT ERR - local i + local i for (( i=2; i<=$OSTCOUNT; i++ )); do start ost$i `ostdevname $i` $OST_MOUNT_OPTS || return $((i+2)) done @@ -1957,9 +1983,9 @@ test_46a() { # wait until osts in sync for (( i=2; i<=$OSTCOUNT; i++ )); do wait_osc_import_state mds ost$i FULL + wait_osc_import_state client ost$i FULL done - #second client see all ost's mount_client $MOUNT2 || return 8 @@ -2172,7 +2198,7 @@ test_50c() { wait_osc_import_state mds ost DISCONN lazystatfs $MOUNT || error "lazystatfs failed with one down server" - umount_client $MOUNT || error "Unable to unmount client" + umount_client $MOUNT || error "Unable to unmount client" stop_ost2 || error "Unable to stop OST2" stop_mds || error "Unable to stop MDS" #writeconf to remove all ost2 traces for subsequent tests @@ -2194,7 +2220,7 @@ test_50d() { stop_ost || error "Unable to stop OST1" lazystatfs $MOUNT || error "lazystatfs failed with one down server" - umount_client $MOUNT || error "Unable to unmount client" + umount_client $MOUNT || error "Unable to unmount client" stop_ost2 || error "Unable to stop OST2" stop_mds || error "Unable to stop MDS" #writeconf to remove all ost2 traces for subsequent tests @@ -2567,33 +2593,20 @@ test_53b() { } run_test 53b "check MDT thread count params" -run_llverfs() -{ - local dir=$1 - local partial_arg="" - local size=$(df -B G $dir | tail -1 | awk '{print $2}' | sed 's/G//') # Gb - - # Run in partial (fast) mode if the size - # of a partition > 10 GB - [ $size -gt 10 ] && partial_arg="-p" - - llverfs $partial_arg $dir -} - test_54a() { - do_rpc_nodes $(facet_host ost1) run_llverdev $(ostdevname 1) + do_rpc_nodes $(facet_host ost1) run_llverdev $(ostdevname 1) -p [ $? -eq 0 ] || error "llverdev failed!" reformat_and_config } -run_test 54a "llverdev" +run_test 54a "test llverdev and partial verify of device" test_54b() { setup - run_llverfs $MOUNT + run_llverfs $MOUNT -p [ $? -eq 0 ] || error "llverfs failed!" cleanup } -run_test 54b "llverfs" +run_test 54b "test llverfs and partial verify of filesystem" lov_objid_size() { @@ -2606,7 +2619,7 @@ test_55() { local ostdev=$(ostdevname 1) local saved_opts=$OST_MKFS_OPTS - for i in 0 1023 2048 + for i in 1023 2048 do OST_MKFS_OPTS="$saved_opts --index $i" reformat @@ -2749,5 +2762,13 @@ fi cleanup_gss +# restore the ${facet}_MKFS_OPTS variables +for facet in MGS MDS OST; do + opts=SAVED_${facet}_MKFS_OPTS + if [[ -n ${!opts} ]]; then + eval ${facet}_MKFS_OPTS=\"${!opts}\" + fi +done + complete $(basename $0) $SECONDS exit_status