Whamcloud - gitweb
LU-11206 tests: Use import_ready to check IDLE
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 3c7e54e..8b858b6 100755 (executable)
@@ -8,8 +8,8 @@
 set -e
 
 ONLY=${ONLY:-"$*"}
-# bug number for skipped test: LU-9693 LU-6493 LU-9693 LU-11058
-ALWAYS_EXCEPT="$SANITY_EXCEPT  42a     42b     42c     77k"
+# bug number for skipped test: LU-9693 LU-6493 LU-9693
+ALWAYS_EXCEPT="$SANITY_EXCEPT  42a     42b     42c"
 # UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
 
 # skipped tests: LU-8411 LU-9096 LU-9054 ..
@@ -23,8 +23,8 @@ fi
 if [[ $(uname -m) = aarch64 ]]; then
        # bug number:    LU-11596 (all below)
        ALWAYS_EXCEPT+=" 42d 42e 63a 63b 64a 64b 64c"
-       # bug number:    LU-11671 LU-11665 LU-11594 LU-11667
-       ALWAYS_EXCEPT+=" 45       101c     103a     317"
+       # bug number:    LU-11671 LU-11594 LU-11667 LU-11729
+       ALWAYS_EXCEPT+=" 45       103a      317      810"
 fi
 
 # Check Grants after these tests
@@ -68,17 +68,13 @@ LUSTRE_TESTS_API_DIR=${LUSTRE_TESTS_API_DIR:-${LUSTRE}/tests/clientapi}
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
 . ${CONFIG:=$LUSTRE/tests/cfg/${NAME}.sh}
+get_lustre_env
 init_logging
 
-if [[ $MDSCOUNT -gt 1 ]]; then
-       # bug number:    LU-11161
-       ALWAYS_EXCEPT+=" 160g"
-fi
-
 #                                  5          12          (min)"
 [ "$SLOW" = "no" ] && EXCEPT_SLOW="27m 64b 68 71 115 300o"
 
-if [ $(facet_fstype $SINGLEMDS) = "zfs" ]; then
+if [ "$mds1_FSTYPE" = "zfs" ]; then
        # bug number for skipped test: LU-1957
        ALWAYS_EXCEPT="$ALWAYS_EXCEPT  180"
        #                                               13    (min)"
@@ -154,7 +150,8 @@ MAXFREE=${MAXFREE:-$((200000 * $OSTCOUNT))}
 rm -rf $DIR/[Rdfs][0-9]*
 
 # $RUNAS_ID may get set incorrectly somewhere else
-[ $UID -eq 0 -a $RUNAS_ID -eq 0 ] && error "\$RUNAS_ID set to 0, but \$UID is also 0!"
+[ $UID -eq 0 -a $RUNAS_ID -eq 0 ] &&
+       error "\$RUNAS_ID set to 0, but \$UID is also 0!"
 
 check_runas_id $RUNAS_ID $RUNAS_GID $RUNAS
 
@@ -198,7 +195,7 @@ test_0c() {
 run_test 0c "check import proc"
 
 test_0d() { # LU-3397
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.57) ] &&
+       [ $MGS_VERSION -lt $(version_code 2.10.57) ] &&
                skip "proc exports not supported before 2.10.57"
 
        local mgs_exp="mgs.MGS.exports"
@@ -230,7 +227,7 @@ test_0d() { # LU-3397
        # Compare the value of client version
        exp_client_version=$(awk '/target_version:/ { print $2 }' $temp_exp)
        exp_val=$(version_code $exp_client_version)
-       imp_val=$(lustre_version_code client)
+       imp_val=$CLIENT_VERSION
        [ "$exp_val" == "$imp_val" ] ||
                error "export client version '$exp_val' != '$imp_val'"
 }
@@ -548,12 +545,12 @@ test_17g() {
        local TESTS="59 60 61 4094 4095"
 
        # Fix for inode size boundary in 2.1.4
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.1.4) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.1.4) ] &&
                TESTS="4094 4095"
 
        # Patch not applied to 2.2 or 2.3 branches
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] &&
-       [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.3.55) ] &&
+       [ $MDS1_VERSION -ge $(version_code 2.2.0) ] &&
+       [ $MDS1_VERSION -le $(version_code 2.3.55) ] &&
                TESTS="4094 4095"
 
        # skip long symlink name for rhel6.5.
@@ -638,11 +635,10 @@ run_test 17l "Ensure lgetxattr's returned xattr size is consistent"
 # LU-1540
 test_17m() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] &&
-       [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.2.93) ] &&
+       [ $MDS1_VERSION -ge $(version_code 2.2.0) ] &&
+       [ $MDS1_VERSION -le $(version_code 2.2.93) ] &&
                skip "MDS 2.2.0-2.2.93 do not NUL-terminate symlinks"
 
        local short_sym="0123456789"
@@ -715,11 +711,10 @@ check_fs_consistency_17n() {
 test_17n() {
        [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] &&
-       [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.2.93) ] &&
+       [ $MDS1_VERSION -ge $(version_code 2.2.0) ] &&
+       [ $MDS1_VERSION -le $(version_code 2.2.93) ] &&
                skip "MDS 2.2.0-2.2.93 do not NUL-terminate symlinks"
 
        local i
@@ -743,7 +738,7 @@ test_17n() {
        check_fs_consistency_17n ||
                error "e2fsck report error after unlink files under remote dir"
 
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.4.50) ] &&
                skip "lustre < 2.4.50 does not support migrate mv"
 
        for ((i = 0; i < 10; i++)); do
@@ -766,7 +761,7 @@ run_test 17n "run e2fsck against master/slave MDT which contains remote dir"
 
 test_17o() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.64) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.3.64) ] &&
                skip "Need MDS version at least 2.3.64"
 
        local wdir=$DIR/${tdir}o
@@ -1169,7 +1164,7 @@ test_24v() {
        local fname="$DIR/$tdir/$tfile"
 
        # Performance issue on ZFS see LU-4072 (c.f. LU-2887)
-       [ $(facet_fstype $SINGLEMDS) = "zfs" ] && nrfiles=${COUNT:-10000}
+       [ "$mds1_FSTYPE" = "zfs" ] && nrfiles=${COUNT:-10000}
 
        test_mkdir "$(dirname $fname)"
        # assume MDT0000 has the fewest inodes
@@ -1229,7 +1224,7 @@ run_test 24w "Reading a file larger than 4Gb"
 test_24x() {
        [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.56) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.7.56) ]] &&
                skip "Need MDS version at least 2.7.56"
 
        local MDTIDX=1
@@ -1392,6 +1387,26 @@ test_24E() {
 }
 run_test 24E "cross MDT rename/link"
 
+test_24F () {
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return 0
+
+       local repeats=1000
+       [ "$SLOW" = "no" ] && repeats=100
+
+       mkdir -p $DIR/$tdir
+
+       echo "$repeats repeats"
+       for ((i = 0; i < repeats; i++)); do
+               $LFS mkdir -i0 -c2 $DIR/$tdir/test || error "mkdir fails"
+               touch $DIR/$tdir/test/a || error "touch fails"
+               mkdir $DIR/$tdir/test/b || error "mkdir fails"
+               rm -rf $DIR/$tdir/test || error "rmdir fails"
+       done
+
+       true
+}
+run_test 24F "hash order vs readdir (LU-11330)"
+
 test_25a() {
        echo '== symlink sanity ============================================='
 
@@ -1496,7 +1511,7 @@ run_test 27d "create file with default settings"
 
 test_27e() {
        # LU-5839 adds check for existed layout before setting it
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.56) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.7.56) ]] &&
                skip "Need MDS version at least 2.7.56"
 
        test_mkdir $DIR/$tdir
@@ -1509,7 +1524,7 @@ run_test 27e "setstripe existing file (should return error)"
 test_27f() {
        test_mkdir $DIR/$tdir
        $LFS setstripe -S 100 -i 0 -c 1 $DIR/$tdir/$tfile &&
-               error "$SETSTRIPE $DIR/$tdir/$tfile failed"
+               error "$LFS setstripe $DIR/$tdir/$tfile failed"
        $CHECKSTAT -t file $DIR/$tdir/$tfile &&
                error "$CHECKSTAT -t file $DIR/$tdir/$tfile should fail"
        dd if=/dev/zero of=$DIR/$tdir/$tfile bs=4k count=4 || error "dd failed"
@@ -1635,7 +1650,7 @@ exhaust_precreations() {
        do_facet $mfacet lctl get_param osc.$mdtosc_proc2.prealloc*
 
        test_mkdir -p $DIR/$tdir/${OST}
-       $SETSTRIPE -i $OSTIDX -c 1 $DIR/$tdir/${OST}
+       $LFS setstripe -i $OSTIDX -c 1 $DIR/$tdir/${OST}
 #define OBD_FAIL_OST_ENOSPC              0x215
        do_facet $ofacet lctl set_param fail_val=$FAILIDX fail_loc=0x215
        echo "Creating to objid $last_id on ost $OST..."
@@ -1955,33 +1970,33 @@ run_test 27y "create files while OST0 is degraded and the rest inactive"
 
 check_seq_oid()
 {
-        log "check file $1"
-
-        lmm_count=$($GETSTRIPE -c $1)
-        lmm_seq=$($GETSTRIPE -v $1 | awk '/lmm_seq/ { print $2 }')
-        lmm_oid=$($GETSTRIPE -v $1 | awk '/lmm_object_id/ { print $2 }')
-
-        local old_ifs="$IFS"
-        IFS=$'[:]'
-        fid=($($LFS path2fid $1))
-        IFS="$old_ifs"
-
-        log "FID seq ${fid[1]}, oid ${fid[2]} ver ${fid[3]}"
-        log "LOV seq $lmm_seq, oid $lmm_oid, count: $lmm_count"
-
-        # compare lmm_seq and lu_fid->f_seq
-        [ $lmm_seq = ${fid[1]} ] || { error "SEQ mismatch"; return 1; }
-        # compare lmm_object_id and lu_fid->oid
-        [ $lmm_oid = ${fid[2]} ] || { error "OID mismatch"; return 2; }
-
-        # check the trusted.fid attribute of the OST objects of the file
-        local have_obdidx=false
-        local stripe_nr=0
-        $GETSTRIPE $1 | while read obdidx oid hex seq; do
-                # skip lines up to and including "obdidx"
-                [ -z "$obdidx" ] && break
-                [ "$obdidx" = "obdidx" ] && have_obdidx=true && continue
-                $have_obdidx || continue
+       log "check file $1"
+
+       lmm_count=$($LFS getstripe -c $1)
+       lmm_seq=$($LFS getstripe -v $1 | awk '/lmm_seq/ { print $2 }')
+       lmm_oid=$($LFS getstripe -v $1 | awk '/lmm_object_id/ { print $2 }')
+
+       local old_ifs="$IFS"
+       IFS=$'[:]'
+       fid=($($LFS path2fid $1))
+       IFS="$old_ifs"
+
+       log "FID seq ${fid[1]}, oid ${fid[2]} ver ${fid[3]}"
+       log "LOV seq $lmm_seq, oid $lmm_oid, count: $lmm_count"
+
+       # compare lmm_seq and lu_fid->f_seq
+       [ $lmm_seq = ${fid[1]} ] || { error "SEQ mismatch"; return 1; }
+       # compare lmm_object_id and lu_fid->oid
+       [ $lmm_oid = ${fid[2]} ] || { error "OID mismatch"; return 2; }
+
+       # check the trusted.fid attribute of the OST objects of the file
+       local have_obdidx=false
+       local stripe_nr=0
+       $LFS getstripe $1 | while read obdidx oid hex seq; do
+               # skip lines up to and including "obdidx"
+               [ -z "$obdidx" ] && break
+               [ "$obdidx" = "obdidx" ] && have_obdidx=true && continue
+               $have_obdidx || continue
 
                local ost=$((obdidx + 1))
                local dev=$(ostdevname $ost)
@@ -2050,7 +2065,7 @@ check_seq_oid()
                        error "FF stripe $ff_pstripe != $stripe_nr"
 
                stripe_nr=$((stripe_nr + 1))
-               [ $(lustre_version_code client) -lt $(version_code 2.9.55) ] &&
+               [ $CLIENT_VERSION -lt $(version_code 2.9.55) ] &&
                        continue
                if grep -q 'stripe_count=' <<<$ff; then
                        local ff_scnt=$(sed -e 's/.*stripe_count=//' \
@@ -2091,10 +2106,10 @@ test_27A() { # b=19102
 
        save_layout_restore_at_exit $MOUNT
        $LFS setstripe -c 0 -i -1 -S 0 $MOUNT
-       wait_update $HOSTNAME "$GETSTRIPE -c $MOUNT | sed 's/  *//g'" "1" 20 ||
-               error "stripe count $($GETSTRIPE -c $MOUNT) != 1"
-       local default_size=$($GETSTRIPE -S $MOUNT)
-       local default_offset=$($GETSTRIPE -i $MOUNT)
+       wait_update $HOSTNAME "$LFS getstripe -c $MOUNT | sed 's/  *//g'" "1" 20 ||
+               error "stripe count $($LFS getstripe -c $MOUNT) != 1"
+       local default_size=$($LFS getstripe -S $MOUNT)
+       local default_offset=$($LFS getstripe -i $MOUNT)
        local dsize=$(do_facet $SINGLEMDS \
                "$LCTL get_param -n lod.$(facet_svc $SINGLEMDS)*.stripesize")
        [ $default_size -eq $dsize ] ||
@@ -2140,9 +2155,9 @@ test_27C() { #LU-2871
        cd $DIR/$tdir
        for i in $(seq 0 $((OSTCOUNT - 1))); do
                # set stripe across all OSTs starting from OST$i
-               $SETSTRIPE -i $i -c -1 $tfile$i
+               $LFS setstripe -i $i -c -1 $tfile$i
                # get striping information
-               ost_idx=($($GETSTRIPE $tfile$i |
+               ost_idx=($($LFS getstripe $tfile$i |
                         tail -n $((OSTCOUNT + 1)) | awk '{print $1}'))
                echo ${ost_idx[@]}
 
@@ -2186,10 +2201,10 @@ test_27D() {
        pool_add_targets $POOL $ost_range || error "pool_add_targets failed"
 
        local skip27D
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.8.55) ] &&
                skip27D+="-s 29"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.9.55) -o \
-         $(lustre_version_code client) -lt $(version_code 2.9.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.9.55) -o \
+         $CLIENT_VERSION -lt $(version_code 2.9.55) ] &&
                skip27D+=" -s 30,31"
        llapi_layout_test -d$DIR/$tdir -p$POOL -o$OSTCOUNT $skip27D ||
                error "llapi_layout_test failed"
@@ -2206,7 +2221,7 @@ run_test 27D "validate llapi_layout API"
 # accessing a widely striped file.
 test_27E() {
        [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
-       [ $(lustre_version_code client) -lt $(version_code 2.5.57) ] &&
+       [ $CLIENT_VERSION -lt $(version_code 2.5.57) ] &&
                skip "client does not have LU-3338 fix"
 
        # 72 bytes is the minimum space required to store striping
@@ -2236,13 +2251,13 @@ run_test 27E "check that default extended attribute size properly increases"
 test_27F() { # LU-5346/LU-7975
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [[ $OSTCOUNT -lt 2 ]] && skip "needs >= 2 OSTs"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.51) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.8.51) ]] &&
                skip "Need MDS version at least 2.8.51"
        remote_ost_nodsh && skip "remote OST with nodsh"
 
        test_mkdir $DIR/$tdir
        rm -f $DIR/$tdir/f0
-       $SETSTRIPE -c 2 $DIR/$tdir
+       $LFS setstripe -c 2 $DIR/$tdir
 
        # stop all OSTs to reproduce situation for LU-7975 ticket
        for num in $(seq $OSTCOUNT); do
@@ -2268,14 +2283,17 @@ test_27F() { # LU-5346/LU-7975
        wait $catpid || error "cat failed"
 
        cmp /etc/hosts $DIR/$tdir/f0 || error "cmp failed"
-       [[ $($GETSTRIPE -c $DIR/$tdir/f0) == 2 ]] || error "wrong stripecount"
+       [[ $($LFS getstripe -c $DIR/$tdir/f0) == 2 ]] ||
+               error "wrong stripecount"
 
 }
 run_test 27F "Client resend delayed layout creation with non-zero size"
 
 test_27G() { #LU-10629
-       [ -n "$FILESET" ] && skip "SKIP due to FILESET set" && return
-       remote_mds_nodsh && skip "remote MDS with nodsh" && return
+       [ $MDS1_VERSION -lt $(version_code 2.11.51) ] &&
+               skip "Need MDS version at least 2.11.51"
+       [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
+       remote_mds_nodsh && skip "remote MDS with nodsh"
        local POOL=${POOL:-testpool}
        local ostrange="0 0 1"
 
@@ -2299,7 +2317,7 @@ test_27G() { #LU-10629
 run_test 27G "Clear OST pool from stripe"
 
 test_27H() {
-       [[ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.11.54) ]] &&
+       [[ $MDS1_VERSION -le $(version_code 2.11.54) ]] &&
                skip "Need MDS version newer than 2.11.54"
        [[ $OSTCOUNT -lt 3 ]] && skip_env "needs >= 3 OSTs"
        test_mkdir $DIR/$tdir
@@ -2315,8 +2333,8 @@ test_27H() {
             egrep -c "l_ost_idx: [02]$") == "2" )) ||
                error "expected l_ost_idx: [02]$ not matched"
 
-       # make sure ost list have been cleared
-       local stripesize=$($GETSTRIPE -S $DIR/$tdir)
+       # make sure ost list has been cleared
+       local stripesize=$($LFS getstripe -S $DIR/$tdir)
        $LFS setstripe -S $((stripesize * 4)) -i 1 \
                -c $((OSTCOUNT - 1)) $DIR/$tdir || error "setstripe"
        touch $DIR/$tdir/f3
@@ -2452,19 +2470,19 @@ test_31f() { # bug 4554
 
        set -vx
        test_mkdir $DIR/d31f
-       $SETSTRIPE -S 1048576 -c 1 $DIR/d31f
+       $LFS setstripe -S 1048576 -c 1 $DIR/d31f
        cp /etc/hosts $DIR/d31f
        ls -l $DIR/d31f
-       $GETSTRIPE $DIR/d31f/hosts
+       $LFS getstripe $DIR/d31f/hosts
        multiop_bg_pause $DIR/d31f D_c || return 1
        MULTIPID=$!
 
        rm -rv $DIR/d31f || error "first of $DIR/d31f"
        test_mkdir $DIR/d31f
-       $SETSTRIPE -S 1048576 -c 1 $DIR/d31f
+       $LFS setstripe -S 1048576 -c 1 $DIR/d31f
        cp /etc/hosts $DIR/d31f
        ls -l $DIR/d31f
-       $GETSTRIPE $DIR/d31f/hosts
+       $LFS getstripe $DIR/d31f/hosts
        multiop_bg_pause $DIR/d31f D_c || return 1
        MULTIPID2=$!
 
@@ -3101,10 +3119,10 @@ TEST_34_SIZE=${TEST_34_SIZE:-2000000000000}
 test_34a() {
        rm -f $DIR/f34
        $MCREATE $DIR/f34 || error "mcreate failed"
-       $GETSTRIPE $DIR/f34 2>&1 | grep -q "no stripe info" ||
+       $LFS getstripe $DIR/f34 2>&1 | grep -q "no stripe info" ||
                error "getstripe failed"
        $TRUNCATE $DIR/f34 $TEST_34_SIZE || error "truncate failed"
-       $GETSTRIPE $DIR/f34 2>&1 | grep -q "no stripe info" ||
+       $LFS getstripe $DIR/f34 2>&1 | grep -q "no stripe info" ||
                error "getstripe failed"
        $CHECKSTAT -s $TEST_34_SIZE $DIR/f34 ||
                error "Size of $DIR/f34 not equal to $TEST_34_SIZE bytes"
@@ -3116,7 +3134,7 @@ test_34b() {
        $CHECKSTAT -s $TEST_34_SIZE $DIR/f34 ||
                error "Size of $DIR/f34 not equal to $TEST_34_SIZE bytes"
        $OPENFILE -f O_RDONLY $DIR/f34
-       $GETSTRIPE $DIR/f34 2>&1 | grep -q "no stripe info" ||
+       $LFS getstripe $DIR/f34 2>&1 | grep -q "no stripe info" ||
                error "getstripe failed"
        $CHECKSTAT -s $TEST_34_SIZE $DIR/f34 ||
                error "Size of $DIR/f34 not equal to $TEST_34_SIZE bytes"
@@ -3128,7 +3146,8 @@ test_34c() {
        $CHECKSTAT -s $TEST_34_SIZE $DIR/f34 ||
                error "Size of $DIR/f34 not equal to $TEST_34_SIZE bytes"
        $OPENFILE -f O_RDWR $DIR/f34
-       $GETSTRIPE $DIR/f34 2>&1 | grep -q "no stripe info" && error
+       $LFS getstripe $DIR/f34 2>&1 | grep -q "no stripe info" &&
+               error "$LFS getstripe failed"
        $CHECKSTAT -s $TEST_34_SIZE $DIR/f34 ||
                error "Size of $DIR/f34 not equal to $TEST_34_SIZE bytes"
 }
@@ -4001,7 +4020,7 @@ test_42e() { # bug22074
        local warmup_files
 
        test_mkdir $DIR/${tdir}e
-       $SETSTRIPE -c 1 $TDIR
+       $LFS setstripe -c 1 $TDIR
        createmany -o $TDIR/f $files
 
        max_dirty_mb=$($LCTL get_param -n $proc_osc0/max_dirty_mb)
@@ -4014,7 +4033,7 @@ test_42e() { # bug22074
        # write a large amount of data into one file and sync, to get good
        # avail_grant number from OST.
        for ((i=0; i<$warmup_files; i++)); do
-               idx=$($GETSTRIPE -i $TDIR/w$i)
+               idx=$($LFS getstripe -i $TDIR/w$i)
                [ $idx -ne 0 ] && continue
                dd if=/dev/zero of=$TDIR/w$i bs="$max_dirty_mb"M count=1
                break
@@ -4028,7 +4047,7 @@ test_42e() { # bug22074
        # RPCs directly. but depends on the env, VFS may trigger flush during this
        # period, hopefully we are good.
        for ((i=0; i<$warmup_files; i++)); do
-               idx=$($GETSTRIPE -i $TDIR/w$i)
+               idx=$($LFS getstripe -i $TDIR/w$i)
                [ $idx -ne 0 ] && continue
                dd if=/dev/zero of=$TDIR/w$i bs=1M count=1 2>/dev/null
        done
@@ -4038,7 +4057,7 @@ test_42e() { # bug22074
        # perform the real test
        $LCTL set_param $proc_osc0/rpc_stats 0
        for ((;i<$files; i++)); do
-               [ $($GETSTRIPE -i $TDIR/f$i) -eq 0 ] || continue
+               [ $($LFS getstripe -i $TDIR/f$i) -eq 0 ] || continue
                dd if=/dev/zero of=$TDIR/f$i bs=$PAGE_SIZE count=$pages 2>/dev/null
        done
        sync
@@ -4230,8 +4249,8 @@ run_test 46 "dirtying a previously written page ================"
 # test_47 is removed "Device nodes check" is moved to test_28
 
 test_48a() { # bug 2399
-       [ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.63) ] &&
+       [ "$mds1_FSTYPE" = "zfs" ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.3.63) ] &&
                skip "MDS prior to 2.3.63 handle ZFS dir .. incorrectly"
 
        test_mkdir $DIR/$tdir
@@ -4340,7 +4359,7 @@ test_49() { # LU-1030
        [[ $ost1_size -lt 2 ]] && ost1_size=2
        [[ $ost1_size -gt 819200 ]] && ost1_size=819200
 
-       $SETSTRIPE -c 1 -i 0 $DIR/$tfile
+       $LFS setstripe -c 1 -i 0 $DIR/$tfile
        dd if=/dev/zero of=$DIR/$tfile bs=4k count=$((ost1_size >> 2)) &
        local dd_pid=$!
 
@@ -4493,7 +4512,7 @@ test_51d() {
 run_test 51d "check object distribution"
 
 test_51e() {
-       if [ "$(facet_fstype $SINGLEMDS)" != ldiskfs ]; then
+       if [ "$mds1_FSTYPE" != ldiskfs ]; then
                skip_env "ldiskfs only test"
        fi
 
@@ -4599,7 +4618,7 @@ test_53() {
        local found=false
        local support_last_seq=true
 
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.60) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.3.60) ]] ||
                support_last_seq=false
 
        # only test MDT0000
@@ -5386,7 +5405,7 @@ test_56w() {
 
        check_stripe_count $dir/file1 $expected
 
-       if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.90) ];
+       if [ $MDS1_VERSION -ge $(version_code 2.6.90) ];
        then
                # lfs_migrate file onto OST 0 if it is on OST 1, or onto
                # OST 1 if it is on OST 0. This file is small enough to
@@ -5787,7 +5806,7 @@ check_migrate_links() {
 }
 
 test_56xb() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dir="$DIR/$tdir"
@@ -5812,7 +5831,7 @@ test_56xb() {
 run_test 56xb "lfs migration hard link support"
 
 test_56y() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.53) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.4.53) ] &&
                skip "No HSM $(lustre_build_version $SINGLEMDS) MDS < 2.4.53"
 
        local res=""
@@ -5907,7 +5926,7 @@ test_56ab() { # LU-10705
 run_test 56ab "lfs find --blocks"
 
 test_56ba() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.50) ] &&
                skip "Need MDS version at least 2.10.50"
 
        # Create composite files with one component
@@ -5972,7 +5991,7 @@ test_56ba() {
 run_test 56ba "test lfs find --component-end, -start, -count, and -flags"
 
 test_56ca() {
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.57) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.10.57) ]] ||
                skip "Need MDS version at least 2.10.57"
 
        local td=$DIR/$tdir
@@ -6048,7 +6067,7 @@ run_test 56ca "check lfs find --mirror-count|-N and --mirror-state"
 test_57a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        # note test will not do anything if MDS is not local
-       if [ "$(facet_fstype $SINGLEMDS)" != ldiskfs ]; then
+       if [ "$mds1_FSTYPE" != ldiskfs ]; then
                skip_env "ldiskfs only test"
        fi
        remote_mds_nodsh && skip "remote MDS with nodsh"
@@ -6068,7 +6087,7 @@ run_test 57a "verify MDS filesystem created with large inodes =="
 
 test_57b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       if [ "$(facet_fstype $SINGLEMDS)" != ldiskfs ]; then
+       if [ "$mds1_FSTYPE" != ldiskfs ]; then
                skip_env "ldiskfs only test"
        fi
        remote_mds_nodsh && skip "remote MDS with nodsh"
@@ -6160,7 +6179,7 @@ test_60a() {
                        skip_env "missing subtest run-llog.sh"
 
        log "$TEST60_HEAD - from kernel mode"
-       do_facet mgs "$LCTL set_param debug=warning; $LCTL dk > /dev/null"
+       do_facet mgs "$LCTL dk > /dev/null"
        do_facet mgs "bash run-llog.sh" || error "run-llog.sh failed"
        do_facet mgs $LCTL dk > $TMP/$tfile
 
@@ -6240,48 +6259,6 @@ test_60a() {
 }
 run_test 60a "llog_test run from kernel module and test llog_reader"
 
-test_60aa() {
-       remote_mgs_nodsh && skip "remote MGS with nodsh"
-
-       # test old logid format
-       if [ $(lustre_version_code mgs) -le $(version_code 3.1.53) ]; then
-               do_facet mgs $LCTL dl | grep MGS
-               do_facet mgs "$LCTL --device %MGS llog_print \\\\\\\$$FSNAME-client" ||
-                       error "old llog_print failed"
-       fi
-
-       # test new logid format
-       if [ $(lustre_version_code mgs) -ge $(version_code 2.9.53) ]; then
-               do_facet mgs "$LCTL --device MGS llog_print $FSNAME-client" ||
-                       error "new llog_print failed"
-       fi
-}
-run_test 60aa "llog_print works with FIDs and simple names"
-
-test_60ab() {
-       # test llog_print with params
-
-       [[ $(lustre_version_code $SINGLEMDS) -gt $(version_code 2.11.51) ]] ||
-               skip "Need server version greater than 2.11.51"
-
-       local yaml
-       local orig_val
-
-       orig_val=$(do_facet mgs $LCTL get_param jobid_name)
-       do_facet mgs $LCTL set_param -P jobid_name="testname"
-
-       yaml=$(do_facet mgs $LCTL --device MGS llog_print params |
-           grep jobid_name | tail -n 1)
-
-       local param=`awk '{ print $10 }' <<< "$yaml"`
-       local val=`awk '{ print $12 }' <<< "$yaml"`
-       #return to the default
-       do_facet mgs $LCTL set_param -P jobid_name=$orig_val
-       [ $val = "testname" ] || error "bad value: $val"
-       [ $param = "jobid_name," ] || error "Bad param: $param"
-}
-run_test 60ab "llog_print params output values from set_param -P"
-
 test_60b() { # bug 6411
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
@@ -6517,7 +6494,7 @@ grant_chunk() {
 }
 
 test_64d() {
-       [ $(lustre_version_code ost1) -lt $(version_code 2.10.56) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.10.56) ] &&
                skip "OST < 2.10.55 doesn't limit grants enough"
 
        local tgt=$($LCTL dl | grep "0000-osc-[^mM]" | awk '{print $4}')
@@ -6534,7 +6511,7 @@ test_64d() {
        local max_cur_granted=$(($(want_grant $tgt) + $(grant_chunk $tgt)))
        stack_trap "rm -f $file" EXIT
 
-       $SETSTRIPE $file -i 0 -c 1
+       $LFS setstripe $file -i 0 -c 1
        dd if=/dev/zero of=$file bs=1M count=1000 &
        ddpid=$!
 
@@ -6571,9 +6548,9 @@ test_65b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir $DIR/$tdir
-       local STRIPESIZE=$($GETSTRIPE -S $DIR/$tdir)
+       local STRIPESIZE=$($LFS getstripe -S $DIR/$tdir)
 
-       $SETSTRIPE -S $((STRIPESIZE * 2)) -i 0 -c 1 $DIR/$tdir ||
+       $LFS setstripe -S $((STRIPESIZE * 2)) -i 0 -c 1 $DIR/$tdir ||
                                                error "setstripe"
        touch $DIR/$tdir/f2
        $LVERIFY $DIR/$tdir $DIR/$tdir/f2 || error "lverify failed"
@@ -6585,7 +6562,7 @@ test_65c() {
        [ $OSTCOUNT -lt 2 ] && skip_env "need at least 2 OSTs"
 
        test_mkdir $DIR/$tdir
-       local stripesize=$($GETSTRIPE -S $DIR/$tdir)
+       local stripesize=$($LFS getstripe -S $DIR/$tdir)
 
        $LFS setstripe -S $((stripesize * 4)) -i 1 \
                -c $((OSTCOUNT - 1)) $DIR/$tdir || error "setstripe"
@@ -6598,8 +6575,8 @@ test_65d() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir $DIR/$tdir
-       local STRIPECOUNT=$($GETSTRIPE -c $DIR/$tdir)
-       local STRIPESIZE=$($GETSTRIPE -S $DIR/$tdir)
+       local STRIPECOUNT=$($LFS getstripe -c $DIR/$tdir)
+       local STRIPESIZE=$($LFS getstripe -S $DIR/$tdir)
 
        if [[ $STRIPECOUNT -le 0 ]]; then
                sc=1
@@ -6609,7 +6586,7 @@ test_65d() {
        else
                sc=$(($STRIPECOUNT - 1))
        fi
-       $SETSTRIPE -S $STRIPESIZE -c $sc $DIR/$tdir || error "setstripe"
+       $LFS setstripe -S $STRIPESIZE -c $sc $DIR/$tdir || error "setstripe"
        touch $DIR/$tdir/f4 $DIR/$tdir/f5
        $LVERIFY $DIR/$tdir $DIR/$tdir/f4 $DIR/$tdir/f5 ||
                error "lverify failed"
@@ -6621,8 +6598,8 @@ test_65e() {
 
        test_mkdir $DIR/$tdir
 
-       $SETSTRIPE $DIR/$tdir || error "setstripe"
-       $GETSTRIPE -v $DIR/$tdir | grep "Default" ||
+       $LFS setstripe $DIR/$tdir || error "setstripe"
+       $LFS getstripe -v $DIR/$tdir | grep "Default" ||
                                        error "no stripe info failed"
        touch $DIR/$tdir/f6
        $LVERIFY $DIR/$tdir $DIR/$tdir/f6 || error "lverify failed"
@@ -6633,7 +6610,8 @@ test_65f() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir $DIR/${tdir}f
-       $RUNAS $SETSTRIPE $DIR/${tdir}f && error "setstripe succeeded" || true
+       $RUNAS $LFS setstripe $DIR/${tdir}f &&
+               error "setstripe succeeded" || true
 }
 run_test 65f "dir setstripe permission (should return error) ==="
 
@@ -6641,7 +6619,7 @@ test_65g() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir $DIR/$tdir
-       local STRIPESIZE=$($GETSTRIPE -S $DIR/$tdir)
+       local STRIPESIZE=$($LFS getstripe -S $DIR/$tdir)
 
        $LFS setstripe -S $((STRIPESIZE * 2)) -i 0 -c 1 $DIR/$tdir ||
                error "setstripe -S failed"
@@ -6655,12 +6633,12 @@ test_65h() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir $DIR/$tdir
-       local STRIPESIZE=$($GETSTRIPE -S $DIR/$tdir)
+       local STRIPESIZE=$($LFS getstripe -S $DIR/$tdir)
 
        $LFS setstripe -S $((STRIPESIZE * 2)) -i 0 -c 1 $DIR/$tdir ||
                error "setstripe -S failed"
        test_mkdir $DIR/$tdir/dd1
-       [ $($LFS getstripe -c $DIR/$tdir) = $($GETSTRIPE -c $DIR/$tdir/dd1) ] ||
+       [ $($LFS getstripe -c $DIR/$tdir) = $($LFS getstripe -c $DIR/$tdir/dd1) ] ||
                error "stripe info inherit failed"
 }
 run_test 65h "directory stripe info inherit ===================="
@@ -6697,11 +6675,11 @@ test_65j() { # bug6367
 
        save_layout_restore_at_exit $MOUNT
 
-       $SETSTRIPE -d $MOUNT || error "setstripe failed"
+       $LFS setstripe -d $MOUNT || error "setstripe failed"
 }
 run_test 65j "set default striping on root directory (bug 6367)="
 
-cleaup_65k() {
+cleanup_65k() {
        rm -rf $DIR/$tdir
        wait_delete_completed
        do_facet $SINGLEMDS "lctl set_param -n \
@@ -6720,7 +6698,7 @@ test_65k() { # bug11679
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
        local disable_precreate=true
-       [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.8.54) ] &&
+       [ $MDS1_VERSION -le $(version_code 2.8.54) ] &&
                disable_precreate=false
 
        echo "Check OST status: "
@@ -6739,7 +6717,7 @@ test_65k() { # bug11679
                               awk -F: /$ost/'{ print $1 }' | head -n 1)
 
                mkdir -p $DIR/$tdir
-               $SETSTRIPE -i $ostnum -c 1 $DIR/$tdir
+               $LFS setstripe -i $ostnum -c 1 $DIR/$tdir
                createmany -o $DIR/$tdir/$tfile.$ostnum. 1000
 
                echo "Deactivate: " $INACTIVE_OSC
@@ -6755,8 +6733,8 @@ test_65k() { # bug11679
 
                for idx in $(seq 0 $((OSTCOUNT - 1))); do
                        [ -f $DIR/$tdir/$idx ] && continue
-                       echo "$SETSTRIPE -i $idx -c 1 $DIR/$tdir/$idx"
-                       $SETSTRIPE -i $idx -c 1 $DIR/$tdir/$idx ||
+                       echo "$LFS setstripe -i $idx -c 1 $DIR/$tdir/$idx"
+                       $LFS setstripe -i $idx -c 1 $DIR/$tdir/$idx ||
                                { cleanup_65k;
                                  error "setstripe $idx should succeed"; }
                        rm -f $DIR/$tdir/$idx || error "rm $idx failed"
@@ -6780,14 +6758,14 @@ test_65l() { # bug 12836
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
        test_mkdir -p $DIR/$tdir/test_dir
-       $SETSTRIPE -c -1 $DIR/$tdir/test_dir
+       $LFS setstripe -c -1 $DIR/$tdir/test_dir
        $LFS find -mtime -1 $DIR/$tdir >/dev/null
 }
 run_test 65l "lfs find on -1 stripe dir ========================"
 
 test_65m() {
        local layout=$(save_layout $MOUNT)
-       $RUNAS $SETSTRIPE -c 2 $MOUNT && {
+       $RUNAS $LFS setstripe -c 2 $MOUNT && {
                restore_layout $MOUNT $layout
                error "setstripe should fail by non-root users"
        }
@@ -6795,6 +6773,101 @@ test_65m() {
 }
 run_test 65m "normal user can't set filesystem default stripe"
 
+test_65n() {
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
+       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.12.50) ]] ||
+               skip "Need MDS version at least 2.12.50"
+       [[ $PARALLEL != "yes" ]] || skip "skip parallel run"
+
+       [[ $OSTCOUNT -ge 2 ]] || skip_env "needs >= 2 OSTs"
+       which getfattr > /dev/null 2>&1 || skip_env "no getfattr command"
+       which setfattr > /dev/null 2>&1 || skip_env "no setfattr command"
+
+       local root_layout=$(save_layout $MOUNT)
+       stack_trap "restore_layout $MOUNT $root_layout" EXIT
+
+       # new subdirectory under root directory should not inherit
+       # the default layout from root
+       local dir1=$MOUNT/$tdir-1
+       mkdir $dir1 || error "mkdir $dir1 failed"
+       ! getfattr -n trusted.lov $dir1 &> /dev/null ||
+               error "$dir1 shouldn't have LOV EA"
+
+       # delete the default layout on root directory
+       $LFS setstripe -d $MOUNT || error "delete root default layout failed"
+
+       local dir2=$MOUNT/$tdir-2
+       mkdir $dir2 || error "mkdir $dir2 failed"
+       ! getfattr -n trusted.lov $dir2 &> /dev/null ||
+               error "$dir2 shouldn't have LOV EA"
+
+       # set a new striping pattern on root directory
+       local def_stripe_size=$($LFS getstripe -S $MOUNT)
+       local new_def_stripe_size=$((def_stripe_size * 2))
+       $LFS setstripe -S $new_def_stripe_size $MOUNT ||
+               error "set stripe size on $MOUNT failed"
+
+       # new file created in $dir2 should inherit the new stripe size from
+       # the filesystem default
+       local file2=$dir2/$tfile-2
+       touch $file2 || error "touch $file2 failed"
+
+       local file2_stripe_size=$($LFS getstripe -S $file2)
+       [[ $file2_stripe_size -eq $new_def_stripe_size ]] ||
+               error "$file2 didn't inherit stripe size $new_def_stripe_size"
+
+       local dir3=$MOUNT/$tdir-3
+       mkdir $dir3 || error "mkdir $dir3 failed"
+       ! getfattr -n trusted.lov $dir3 &> /dev/null ||
+               error "$dir3 shouldn't have LOV EA"
+
+       # set OST pool on root directory
+       local pool=$TESTNAME
+       pool_add $pool || error "add $pool failed"
+       pool_add_targets $pool 0 $((OSTCOUNT - 1)) 1 ||
+               error "add targets to $pool failed"
+
+       $LFS setstripe -p $pool $MOUNT ||
+               error "set OST pool on $MOUNT failed"
+
+       # new file created in $dir3 should inherit the pool from
+       # the filesystem default
+       local file3=$dir3/$tfile-3
+       touch $file3 || error "touch $file3 failed"
+
+       local file3_pool=$($LFS getstripe -p $file3)
+       [[ "$file3_pool" = "$pool" ]] ||
+               error "$file3 didn't inherit OST pool $pool"
+
+       local dir4=$MOUNT/$tdir-4
+       mkdir $dir4 || error "mkdir $dir4 failed"
+       ! getfattr -n trusted.lov $dir4 &> /dev/null ||
+               error "$dir4 shouldn't have LOV EA"
+
+       # new file created in $dir4 should inherit the pool from
+       # the filesystem default
+       local file4=$dir4/$tfile-4
+       touch $file4 || error "touch $file4 failed"
+
+       local file4_pool=$($LFS getstripe -p $file4)
+       [[ "$file4_pool" = "$pool" ]] ||
+               error "$file4 didn't inherit OST pool $pool"
+
+       # new subdirectory under non-root directory should inherit
+       # the default layout from its parent directory
+       $LFS setstripe -S $new_def_stripe_size -p $pool $dir4 ||
+               error "set directory layout on $dir4 failed"
+
+       local dir5=$dir4/$tdir-5
+       mkdir $dir5 || error "mkdir $dir5 failed"
+
+       local dir4_layout=$(get_layout_param $dir4)
+       local dir5_layout=$(get_layout_param $dir5)
+       [[ "$dir4_layout" = "$dir5_layout" ]] ||
+               error "$dir5 should inherit the default layout from $dir4"
+}
+run_test 65n "don't inherit default layout from root for new subdirectories"
+
 # bug 2543 - update blocks count on client
 test_66() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
@@ -6823,7 +6896,7 @@ test_69() {
        remote_ost_nodsh && skip "remote OST with nodsh"
 
        f="$DIR/$tfile"
-       $SETSTRIPE -c 1 -i 0 $f
+       $LFS setstripe -c 1 -i 0 $f
 
        $DIRECTIO write ${f}.2 0 1 || error "directio write error"
 
@@ -7118,7 +7191,7 @@ test_77c() {
                error "dd write error: $?"
        fid=$($LFS path2fid $DIR/$tfile)
 
-       if [ $(lustre_version_code ost1) -ge $(version_code 2.9.57) ]
+       if [ $OST1_VERSION -ge $(version_code 2.9.57) ]
        then
                check_ost=true
                ost_file_prefix=$(do_facet ost1 $LCTL get_param -n debug_path)
@@ -7227,7 +7300,7 @@ test_77g() { # bug 10889
        local file=$DIR/$tfile
        stack_trap "rm -f $file" EXIT
 
-       $SETSTRIPE -c 1 -i 0 $file
+       $LFS setstripe -c 1 -i 0 $file
        #define OBD_FAIL_OST_CHECKSUM_RECEIVE       0x21a
        do_facet ost1 lctl set_param fail_loc=0x8000021a
        set_checksums 1
@@ -7270,6 +7343,9 @@ test_77k() { # LU-10906
                checksum=$(eval $get_checksum)
                [ $checksum -eq $i ] || error "checksum($checksum) != $i"
        done
+       # remove persistent param to avoid races with checksum mountopt below
+       do_facet mgs $LCTL set_param -P -d $cksum_param ||
+               error "failed to delete checksum on MGS"
 
        for opt in "checksum" "nochecksum"; do
                #remount with mount option
@@ -7331,7 +7407,7 @@ test_78() { # bug 10901
 
        [ "$SLOW" = "no" ] && NSEQ=1 && [ $F78SIZE -gt 32 ] && F78SIZE=32
        echo "File size: $F78SIZE"
-       $SETSTRIPE -c $OSTCOUNT $DIR/$tfile || error "setstripe failed"
+       $LFS setstripe -c $OSTCOUNT $DIR/$tfile || error "setstripe failed"
        for i in $(seq 1 $NSEQ); do
                FSIZE=$(($F78SIZE / ($NSEQ - $i + 1)))
                echo directIO rdwr round $i of $NSEQ
@@ -7383,7 +7459,7 @@ test_80() { # bug 10718
        local soc_old=$(do_facet ost1 lctl get_param -n $soc | head -n1)
        local hosts=
        if [ "$soc_old" != "never" ] &&
-               [ "$(facet_fstype ost1)" != "ldiskfs" ]; then
+               [ "$ost1_FSTYPE" != "ldiskfs" ]; then
                        hosts=$(for host in $(seq -f "ost%g" 1 $OSTCOUNT); do
                                facet_active_host $host; done | sort -u)
                        do_nodes $hosts lctl set_param $soc=never
@@ -7414,7 +7490,7 @@ test_81a() { # LU-456
        do_facet ost1 lctl set_param fail_loc=0x80000228
 
        # write should trigger a retry and success
-       $SETSTRIPE -i 0 -c 1 $DIR/$tfile
+       $LFS setstripe -i 0 -c 1 $DIR/$tfile
        $MULTIOP $DIR/$tfile oO_CREAT:O_RDWR:O_SYNC:w4096c
        RC=$?
        if [ $RC -ne 0 ] ; then
@@ -7432,7 +7508,7 @@ test_81b() { # LU-456
        do_facet ost1 lctl set_param fail_loc=0x228
 
        # write should retry several times and return -ENOSPC finally
-       $SETSTRIPE -i 0 -c 1 $DIR/$tfile
+       $LFS setstripe -i 0 -c 1 $DIR/$tfile
        $MULTIOP $DIR/$tfile oO_CREAT:O_RDWR:O_SYNC:w4096c
        RC=$?
        ENOSPC=28
@@ -7464,18 +7540,6 @@ test_82() { # LU-1031
 }
 run_test 82 "Basic grouplock test"
 
-test_83() {
-       local sfile="/boot/System.map-$(uname -r)"
-       [ ! -f $sfile ] && skip "No $sfile found"
-       # define OBD_FAIL_LLITE_PTASK_IO_FAIL 0x140d
-       $LCTL set_param fail_loc=0x140d
-       cp $sfile $DIR/$tfile || error "write failed"
-       diff -c $sfile $DIR/$tfile || error "files are different"
-       $LCTL set_param fail_loc=0
-       rm -f $DIR/$tfile
-}
-run_test 83 "Short write in ptask ==============================="
-
 test_99() {
        [ -z "$(which cvs 2>/dev/null)" ] && skip_env "could not find cvs"
 
@@ -7595,11 +7659,11 @@ run_test 101a "check read-ahead for random reads"
 
 setup_test101bc() {
        test_mkdir $DIR/$tdir
-       local STRIPE_SIZE=$1
+       local ssize=$1
        local FILE_LENGTH=$2
        STRIPE_OFFSET=0
 
-       local FILE_SIZE_MB=$((FILE_LENGTH / STRIPE_SIZE))
+       local FILE_SIZE_MB=$((FILE_LENGTH / ssize))
 
        local list=$(comma_list $(osts_nodes))
        set_osd_param $list '' read_cache_enable 0
@@ -7607,9 +7671,9 @@ setup_test101bc() {
 
        trap cleanup_test101bc EXIT
        # prepare the read-ahead file
-       $SETSTRIPE -S $STRIPE_SIZE -i $STRIPE_OFFSET -c $OSTCOUNT $DIR/$tfile
+       $LFS setstripe -S $ssize -i $STRIPE_OFFSET -c $OSTCOUNT $DIR/$tfile
 
-       dd if=/dev/zero of=$DIR/$tfile bs=$STRIPE_SIZE \
+       dd if=/dev/zero of=$DIR/$tfile bs=$ssize \
                                count=$FILE_SIZE_MB 2> /dev/null
 
 }
@@ -7688,13 +7752,14 @@ test_101c() {
        local STRIPE_SIZE=1048576
        local FILE_LENGTH=$((STRIPE_SIZE*100))
        local nreads=10000
+       local rsize=65536
        local osc_rpc_stats
 
        setup_test101bc $STRIPE_SIZE $FILE_LENGTH
 
        cancel_lru_locks osc
        $LCTL set_param osc.*.rpc_stats 0
-       $READS -f $DIR/$tfile -s$FILE_LENGTH -b65536 -n$nreads -t 180
+       $READS -f $DIR/$tfile -s$FILE_LENGTH -b$rsize -n$nreads -t 180
        for osc_rpc_stats in $($LCTL get_param -N osc.*.rpc_stats); do
                local stats=$($LCTL get_param -n $osc_rpc_stats)
                local lines=$(echo "$stats" | awk 'END {print NR;}')
@@ -7706,8 +7771,8 @@ test_101c() {
                for size in 1 2 4 8; do
                        local rpc=$(echo "$stats" |
                                    awk '($1 == "'$size':") {print $2; exit; }')
-                       [ $rpc != 0 ] &&
-                               error "Small $((size*4))k read IO $rpc !"
+                       [ $rpc != 0 ] && ((size * PAGE_SIZE < rsize)) &&
+                               error "Small $((size*PAGE_SIZE)) read IO $rpc!"
                done
                echo "$osc_rpc_stats check passed!"
        done
@@ -7733,7 +7798,7 @@ test_101d() {
                skip "Need free space ${sz_MB}M, have ${free_MB}M"
 
        echo "Create test file $file size ${sz_MB}M, ${free_MB}M free"
-       $SETSTRIPE -c -1 $file || error "setstripe failed"
+       $LFS setstripe -c -1 $file || error "setstripe failed"
 
        dd if=/dev/zero of=$file bs=1M count=$sz_MB || error "dd failed"
        echo Cancel LRU locks on lustre client to flush the client cache
@@ -7880,19 +7945,17 @@ test_101g() {
        local list=$(comma_list $(osts_nodes))
        local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
        local brw_size="obdfilter.*.brw_size"
-       local ostver=$(lustre_version_code ost1)
-       local cliver=$(lustre_version_code client)
 
        $LFS setstripe -i 0 -c 1 $DIR/$tfile
 
        local orig_mb=$(do_facet ost1 $LCTL get_param -n $brw_size | head -n 1)
-       if [ $ostver -ge $(version_code 2.8.52) -o \
-            \( $ostver -ge $(version_code 2.7.17) -a \
-               $ostver -lt $(version_code 2.7.50) \) ] &&
-          [ $cliver -ge $(version_code 2.8.52) -o \
-            \( $cliver -ge $(version_code 2.7.17) -a \
-               $cliver -lt $(version_code 2.7.50) \) ]; then
-               [ $ostver -ge $(version_code 2.9.52) ] && suffix="M"
+       if [ $OST1_VERSION -ge $(version_code 2.8.52) -o \
+            \( $OST1_VERSION -ge $(version_code 2.7.17) -a \
+               $OST1_VERSION -lt $(version_code 2.7.50) \) ] &&
+          [ $CLIENT_VERSION -ge $(version_code 2.8.52) -o \
+            \( $CLIENT_VERSION -ge $(version_code 2.7.17) -a \
+               $CLIENT_VERSION -lt $(version_code 2.7.50) \) ]; then
+               [ $OST1_VERSION -ge $(version_code 2.9.52) ] && suffix="M"
                if [[ $orig_mb -lt 16 ]]; then
                        save_lustre_params $osts "$brw_size" > $p
                        do_nodes $list $LCTL set_param -n $brw_size=16$suffix ||
@@ -7928,14 +7991,14 @@ setup_test102() {
 
        trap cleanup_test102 EXIT
        cd $DIR
-       $1 $SETSTRIPE -S $STRIPE_SIZE -i $STRIPE_OFFSET -c $STRIPE_COUNT $tdir
+       $1 $LFS setstripe -S $STRIPE_SIZE -i $STRIPE_OFFSET -c $STRIPE_COUNT $tdir
        cd $DIR/$tdir
        for num in 1 2 3 4; do
                for count in $(seq 1 $STRIPE_COUNT); do
                        for idx in $(seq 0 $[$STRIPE_COUNT - 1]); do
                                local size=`expr $STRIPE_SIZE \* $num`
                                local file=file"$num-$idx-$count"
-                               $1 $SETSTRIPE -S $size -i $idx -c $count $file
+                               $1 $LFS setstripe -S $size -i $idx -c $count $file
                        done
                done
        done
@@ -8019,9 +8082,9 @@ test_102b() {
        # b10930: get/set/list trusted.lov xattr
        echo "get/set/list trusted.lov xattr ..."
        local testfile=$DIR/$tfile
-       $SETSTRIPE -S 65536 -i 1 -c $OSTCOUNT $testfile ||
+       $LFS setstripe -S 65536 -i 1 -c $OSTCOUNT $testfile ||
                error "setstripe failed"
-       local STRIPECOUNT=$($GETSTRIPE -c $testfile) ||
+       local STRIPECOUNT=$($LFS getstripe -c $testfile) ||
                error "getstripe failed"
        getfattr -d -m "^trusted" $testfile 2>/dev/null | grep "trusted.lov" ||
                error "can't get trusted.lov from $testfile"
@@ -8032,8 +8095,8 @@ test_102b() {
 
        $MCREATE $testfile2
        setfattr -n trusted.lov -v $value $testfile2
-       local stripe_size=$($GETSTRIPE -S $testfile2)
-       local stripe_count=$($GETSTRIPE -c $testfile2)
+       local stripe_size=$($LFS getstripe -S $testfile2)
+       local stripe_count=$($LFS getstripe -c $testfile2)
        [[ $stripe_size -eq 65536 ]] ||
                error "stripe size $stripe_size != 65536"
        [[ $stripe_count -eq $STRIPECOUNT ]] ||
@@ -8052,9 +8115,9 @@ test_102c() {
        test_mkdir $DIR/$tdir
        chown $RUNAS_ID $DIR/$tdir
        local testfile=$DIR/$tdir/$tfile
-       $RUNAS $SETSTRIPE -S 65536 -i 1 -c $OSTCOUNT $testfile ||
+       $RUNAS $LFS setstripe -S 65536 -i 1 -c $OSTCOUNT $testfile ||
                error "setstripe failed"
-       local STRIPECOUNT=$($RUNAS $GETSTRIPE -c $testfile) ||
+       local STRIPECOUNT=$($RUNAS $LFS getstripe -c $testfile) ||
                error "getstripe failed"
        $RUNAS getfattr -d -m "^lustre" $testfile 2> /dev/null | \
        grep "lustre.lov" || error "can't get lustre.lov from $testfile"
@@ -8065,8 +8128,8 @@ test_102c() {
 
        $RUNAS $MCREATE $testfile2
        $RUNAS setfattr -n lustre.lov -v $value $testfile2
-       local stripe_size=$($RUNAS $GETSTRIPE -S $testfile2)
-       local stripe_count=$($RUNAS $GETSTRIPE -c $testfile2)
+       local stripe_size=$($RUNAS $LFS getstripe -S $testfile2)
+       local stripe_count=$($RUNAS $LFS getstripe -c $testfile2)
        [ $stripe_size -eq 65536 ] || error "stripe size $stripe_size != 65536"
        [ $stripe_count -eq $STRIPECOUNT ] ||
                error "stripe count $stripe_count != $STRIPECOUNT"
@@ -8223,7 +8286,7 @@ test_102k() {
        local default_size=$($LFS getstripe -S $test_kdir)
        local default_count=$($LFS getstripe -c $test_kdir)
        local default_offset=$($LFS getstripe -i $test_kdir)
-       $SETSTRIPE -S 65536 -i 0 -c $OSTCOUNT $test_kdir ||
+       $LFS setstripe -S 65536 -i 0 -c $OSTCOUNT $test_kdir ||
                error 'dir setstripe failed'
        setfattr -n trusted.lov $test_kdir
        local stripe_size=$($LFS getstripe -S $test_kdir)
@@ -8288,7 +8351,7 @@ getxattr() { # getxattr path name
 test_102n() { # LU-4101 mdt: protect internal xattrs
        [ -z "$(which setfattr 2>/dev/null)" ] &&
                skip "could not find setfattr"
-       if [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.5.50) ]
+       if [ $MDS1_VERSION -lt $(version_code 2.5.50) ]
        then
                skip "MDT < 2.5.50 allows setxattr on internal trusted xattrs"
        fi
@@ -8307,7 +8370,7 @@ test_102n() { # LU-4101 mdt: protect internal xattrs
        # Get 'before' xattrs of $file1.
        getfattr --absolute-names --dump --match=- $file1 > $xattr0
 
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.53) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.8.53) ] &&
                namelist+=" lfsck_namespace"
        for name in $namelist; do
                # Try to copy xattr from $file0 to $file1.
@@ -8333,7 +8396,7 @@ test_102n() { # LU-4101 mdt: protect internal xattrs
                setfattr --remove=$trusted.$name $file1 2> /dev/null
        done
 
-       if [ $(lustre_version_code $SINGLEMDS) -gt $(version_code 2.6.50) ]
+       if [ $MDS1_VERSION -gt $(version_code 2.6.50) ]
        then
                name="lfsck_ns"
                # Try to copy xattr from $file0 to $file1.
@@ -8368,7 +8431,7 @@ test_102n() { # LU-4101 mdt: protect internal xattrs
 run_test 102n "silently ignore setxattr on internal trusted xattrs"
 
 test_102p() { # LU-4703 setxattr did not check ownership
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.5.56) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.5.56) ] &&
                skip "MDS needs to be at least 2.5.56"
 
        local testfile=$DIR/$tfile
@@ -8387,7 +8450,7 @@ test_102p() { # LU-4703 setxattr did not check ownership
 run_test 102p "check setxattr(2) correctly fails without permission"
 
 test_102q() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.92) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.6.92) ] &&
                skip "MDS needs to be at least 2.6.92"
 
        orphan_linkea_check $DIR/$tfile || error "orphan_linkea_check"
@@ -8395,7 +8458,7 @@ test_102q() {
 run_test 102q "flistxattr should not return trusted.link EAs for orphans"
 
 test_102r() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.93) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.6.93) ] &&
                skip "MDS needs to be at least 2.6.93"
 
        touch $DIR/$tfile || error "touch"
@@ -8428,7 +8491,7 @@ test_102r() {
 run_test 102r "set EAs with empty values"
 
 test_102s() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "MDS needs to be at least 2.11.52"
 
        local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
@@ -8454,7 +8517,7 @@ test_102s() {
 run_test 102s "getting nonexistent xattrs should fail"
 
 test_102t() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "MDS needs to be at least 2.11.52"
 
        local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
@@ -8515,9 +8578,9 @@ test_103a() {
        echo "performing permissions..."
        run_acl_subtest permissions || error "permissions failed"
        # LU-1482 mdd: Setting xattr are properly checked with and without ACLs
-       if [ $(lustre_version_code $SINGLEMDS) -gt $(version_code 2.8.55) -o \
-            \( $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6) -a \
-            $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.5.29) \) ]
+       if [ $MDS1_VERSION -gt $(version_code 2.8.55) -o \
+            \( $MDS1_VERSION -lt $(version_code 2.6) -a \
+            $MDS1_VERSION -ge $(version_code 2.5.29) \) ]
        then
                echo "performing permissions xattr..."
                run_acl_subtest permissions_xattr ||
@@ -8541,7 +8604,7 @@ test_103a() {
        fi
 
        echo "LU-2561 newly created file is same size as directory..."
-       if [ $(facet_fstype $SINGLEMDS) != "zfs" ]; then
+       if [ "$mds1_FSTYPE" != "zfs" ]; then
                run_acl_subtest 2561 || error "LU-2561 test failed"
        else
                run_acl_subtest 2561_zfs || error "LU-2561 zfs test failed"
@@ -8561,6 +8624,7 @@ test_103a() {
 run_test 103a "acl test"
 
 test_103b() {
+       declare -a pids
        local U
 
        for U in {0..511}; do
@@ -8585,6 +8649,12 @@ test_103b() {
                        error "lfs setstripe -N2 $DIR/$tfile.m$O '$S' != '$O'"
                rm -f $DIR/$tfile.[smp]$0
                } &
+               local pid=$!
+
+               # limit the concurrently running threads to 64. LU-11878
+               local idx=$((U % 64))
+               [ -z "${pids[idx]}" ] || wait ${pids[idx]}
+               pids[idx]=$pid
        done
        wait
 }
@@ -8618,7 +8688,7 @@ test_104a() {
        lfs df || error "lfs df with deactivated OSC failed"
        lctl --device %$OSC activate
        # wait the osc back to normal
-       wait_osc_import_state client ost FULL
+       wait_osc_import_ready client ost
 
        lfs df || error "lfs df with reactivated OSC failed"
        rm -f $DIR/$tfile
@@ -8630,7 +8700,6 @@ test_104b() {
        [ $RUNAS_ID -eq $UID ] &&
                skip_env "RUNAS_ID = UID = $UID -- skipping"
 
-       chmod 666 /dev/obd
        denied_cnt=$(($($RUNAS $LFS check servers 2>&1 |
                        grep "Permission denied" | wc -l)))
        if [ $denied_cnt -ne 0 ]; then
@@ -8915,7 +8984,7 @@ test_116a() { # was previously test_116()
                DIFF=$((threshold - DIFF2 + 2))
                DIFF2=$((MINV * DIFF / 100))
                echo "Fill $DIFF% remaining space in OST$MINI with ${DIFF2}KB"
-               $SETSTRIPE -i $MINI -c 1 $DIR/$tdir/OST${MINI} ||
+               $LFS setstripe -i $MINI -c 1 $DIR/$tdir/OST${MINI} ||
                        error "setstripe failed"
                DIFF=$((DIFF2 / 2048))
                i=0
@@ -8948,7 +9017,7 @@ test_116a() { # was previously test_116()
        MAXV1=$MAXV
 
        # now fill using QOS
-       $SETSTRIPE -c 1 $DIR/$tdir
+       $LFS setstripe -c 1 $DIR/$tdir
        FILL=$((FILL / 200))
        if [ $FILL -gt 600 ]; then
                FILL=600
@@ -8983,12 +9052,12 @@ test_116a() { # was previously test_116()
        UUID=$(lctl get_param -n lov.${FSNAME}-clilov-*.target_obd |
               awk '/'$MINI1': / {print $2; exit}')
        echo $UUID
-       MINC=$($GETSTRIPE --ost $UUID $DIR/$tdir | grep $DIR | wc -l)
+       MINC=$($LFS getstripe --ost $UUID $DIR/$tdir | grep $DIR | wc -l)
        echo "$MINC files created on smaller OST $MINI1"
        UUID=$(lctl get_param -n lov.${FSNAME}-clilov-*.target_obd |
               awk '/'$MAXI1': / {print $2; exit}')
        echo $UUID
-       MAXC=$($GETSTRIPE --ost $UUID $DIR/$tdir | grep $DIR | wc -l)
+       MAXC=$($LFS getstripe --ost $UUID $DIR/$tdir | grep $DIR | wc -l)
        echo "$MAXC files created on larger OST $MAXI1"
        if [[ $MINC -gt 0 ]]; then
                FILL=$((MAXC * 100 / MINC - 100))
@@ -9051,7 +9120,7 @@ reset_async() {
        FILE=$DIR/reset_async
 
        # Ensure all OSCs are cleared
-       $SETSTRIPE -c -1 $FILE
+       $LFS setstripe -c -1 $FILE
        dd if=/dev/zero of=$FILE bs=64k count=$OSTCOUNT
        sync
        rm $FILE
@@ -9486,7 +9555,7 @@ test_119b() # bug 11737
 {
        [[ $OSTCOUNT -lt 2 ]] && skip_env "needs >= 2 OSTs"
 
-       $SETSTRIPE -c 2 $DIR/$tfile || error "setstripe failed"
+       $LFS setstripe -c 2 $DIR/$tfile || error "setstripe failed"
        dd if=/dev/zero of=$DIR/$tfile bs=1M count=1 seek=1 || error "dd failed"
        sync
        $MULTIOP $DIR/$tfile oO_RDONLY:O_DIRECT:r$((2048 * 1024)) ||
@@ -9511,7 +9580,7 @@ test_119d() # bug 15950
         MAX_RPCS_IN_FLIGHT=`$LCTL get_param -n osc.*OST0000-osc-[^mM]*.max_rpcs_in_flight`
         $LCTL set_param -n osc.*OST0000-osc-[^mM]*.max_rpcs_in_flight 1
         BSIZE=1048576
-        $SETSTRIPE $DIR/$tfile -i 0 -c 1 || error "setstripe failed"
+        $LFS setstripe $DIR/$tfile -i 0 -c 1 || error "setstripe failed"
         $DIRECTIO write $DIR/$tfile 0 1 $BSIZE || error "first directio failed"
         #define OBD_FAIL_OSC_DIO_PAUSE           0x40d
         lctl set_param fail_loc=0x40d
@@ -10145,7 +10214,7 @@ run_test 126 "check that the fsgid provided by the client is taken into account"
 test_127a() { # bug 15521
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
 
-       $SETSTRIPE -i 0 -c 1 $DIR/$tfile || error "setstripe failed"
+       $LFS setstripe -i 0 -c 1 $DIR/$tfile || error "setstripe failed"
        $LCTL set_param osc.*.stats=0
        FSIZE=$((2048 * 1024))
        dd if=/dev/zero of=$DIR/$tfile bs=$FSIZE count=1
@@ -10275,9 +10344,9 @@ check_mds_dmesg() {
 
 test_129() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.5.56) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.5.56) ]] ||
                skip "Need MDS version with at least 2.5.56"
-       if [ "$(facet_fstype $SINGLEMDS)" != ldiskfs ]; then
+       if [ "$mds1_FSTYPE" != ldiskfs ]; then
                skip_env "ldiskfs only test"
        fi
        remote_mds_nodsh && skip "remote MDS with nodsh"
@@ -10348,20 +10417,20 @@ test_130a() {
        trap cleanup_130 EXIT RETURN
 
        local fm_file=$DIR/$tfile
-       $SETSTRIPE -S 65536 -c 1 $fm_file || error "setstripe on $fm_file"
+       $LFS setstripe -S 65536 -c 1 $fm_file || error "setstripe on $fm_file"
        dd if=/dev/zero of=$fm_file bs=65536 count=1 ||
                error "dd failed for $fm_file"
 
        # LU-1795: test filefrag/FIEMAP once, even if unsupported
        filefrag -ves $fm_file
        RC=$?
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $fm_file) + 1)))" = "zfs" ] &&
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $fm_file) + 1)))" = "zfs" ] &&
                skip_env "ORI-366/LU-1941: FIEMAP unimplemented on ZFS"
        [ $RC != 0 ] && error "filefrag $fm_file failed"
 
        filefrag_op=$(filefrag -ve -k $fm_file |
                        sed -n '/ext:/,/found/{/ext:/d; /found/d; p}')
-       lun=$($GETSTRIPE -i $fm_file)
+       lun=$($LFS getstripe -i $fm_file)
 
        start_blk=`echo $filefrag_op | cut -d: -f2 | cut -d. -f1`
        IFS=$'\n'
@@ -10399,9 +10468,9 @@ test_130b() {
        trap cleanup_130 EXIT RETURN
 
        local fm_file=$DIR/$tfile
-       $SETSTRIPE -S 65536 -c $OSTCOUNT $fm_file ||
+       $LFS setstripe -S 65536 -c $OSTCOUNT $fm_file ||
                        error "setstripe on $fm_file"
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $fm_file) + 1)))" = "zfs" ] &&
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $fm_file) + 1)))" = "zfs" ] &&
                skip_env "ORI-366/LU-1941: FIEMAP unimplemented on ZFS"
 
        dd if=/dev/zero of=$fm_file bs=1M count=$OSTCOUNT ||
@@ -10458,8 +10527,8 @@ test_130c() {
        trap cleanup_130 EXIT RETURN
 
        local fm_file=$DIR/$tfile
-       $SETSTRIPE -S 65536 -c 2 $fm_file || error "setstripe on $fm_file"
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $fm_file) + 1)))" = "zfs" ] &&
+       $LFS setstripe -S 65536 -c 2 $fm_file || error "setstripe on $fm_file"
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $fm_file) + 1)))" = "zfs" ] &&
                skip_env "ORI-366/LU-1941: FIEMAP unimplemented on ZFS"
 
        dd if=/dev/zero of=$fm_file seek=1 bs=1M count=1 ||
@@ -10523,12 +10592,12 @@ test_130d() {
        trap cleanup_130 EXIT RETURN
 
        local fm_file=$DIR/$tfile
-       $SETSTRIPE -S 65536 -c $OSTCOUNT $fm_file ||
+       $LFS setstripe -S 65536 -c $OSTCOUNT $fm_file ||
                        error "setstripe on $fm_file"
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $fm_file) + 1)))" = "zfs" ] &&
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $fm_file) + 1)))" = "zfs" ] &&
                skip_env "ORI-366/LU-1941: FIEMAP unimplemented on ZFS"
 
-       local actual_stripe_count=$($GETSTRIPE -c $fm_file)
+       local actual_stripe_count=$($LFS getstripe -c $fm_file)
        dd if=/dev/zero of=$fm_file bs=1M count=$actual_stripe_count ||
                error "dd failed on $fm_file"
 
@@ -10583,8 +10652,8 @@ test_130e() {
        trap cleanup_130 EXIT RETURN
 
        local fm_file=$DIR/$tfile
-       $SETSTRIPE -S 131072 -c 2 $fm_file || error "setstripe on $fm_file"
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $fm_file) + 1)))" = "zfs" ] &&
+       $LFS setstripe -S 131072 -c 2 $fm_file || error "setstripe on $fm_file"
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $fm_file) + 1)))" = "zfs" ] &&
                skip_env "ORI-366/LU-1941: FIEMAP unimplemented on ZFS"
 
        NUM_BLKS=512
@@ -10750,7 +10819,7 @@ test_133a() {
        touch ${testdir}/${tfile} || error "touch failed"
        check_stats $SINGLEMDS "open" 1
        check_stats $SINGLEMDS "close" 1
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.8.54) ] && {
+       [ $MDS1_VERSION -ge $(version_code 2.8.54) ] && {
                mknod ${testdir}/${tfile}-pipe p || error "mknod failed"
                check_stats $SINGLEMDS "mknod" 2
        }
@@ -10798,7 +10867,7 @@ test_133b() {
        chmod 444 ${testdir}/${tfile} || error "chmod failed"
        check_stats $SINGLEMDS "setattr" 1
        do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear
-       if [ $(lustre_version_code $SINGLEMDS) -ne $(version_code 2.2.0) ]
+       if [ $MDS1_VERSION -ne $(version_code 2.2.0) ]
        then            # LU-1740
                ls -l ${testdir}/${tfile} > /dev/null|| error "ls failed"
                check_stats $SINGLEMDS "getattr" 1
@@ -10818,9 +10887,9 @@ test_133b() {
        check_stats $SINGLEMDS "statfs" 1
 
        # check aggregated statfs (LU-10018)
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.54) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.54) ] &&
                return 0
-       [ $(lustre_version_code client) -lt $(version_code 2.11.54) ] &&
+       [ $CLIENT_VERSION -lt $(version_code 2.11.54) ] &&
                return 0
        sleep 2
        do_facet $SINGLEMDS $LCTL set_param mdt.*.md_stats=clear
@@ -10853,7 +10922,7 @@ test_133c() {
        test_mkdir -p $testdir
 
        # verify obdfilter stats.
-       $SETSTRIPE -c 1 -i 0 $testdir/$tfile
+       $LFS setstripe -c 1 -i 0 $testdir/$tfile
        sync
        cancel_lru_locks osc
        wait_delete_completed
@@ -11021,7 +11090,7 @@ test_133e() {
 
        mkdir -p ${testdir} || error "mkdir failed"
 
-       $SETSTRIPE -c 1 -i 0 ${testdir}/${tfile}
+       $LFS setstripe -c 1 -i 0 ${testdir}/${tfile}
 
        for ctr in {write,read}_bytes; do
                sync
@@ -11136,7 +11205,7 @@ run_test 133g "Check reads/writes of server lustre proc files with bad area io"
 test_133h() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.9.54) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.9.54) ]] &&
                skip "Need MDS version at least 2.9.54"
 
        local facet
@@ -11164,7 +11233,7 @@ run_test 133h "Proc files should end with newlines"
 
 test_134a() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.54) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.7.54) ]] &&
                skip "Need MDS version at least 2.7.54"
 
        mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir"
@@ -11200,7 +11269,7 @@ run_test 134a "Server reclaims locks when reaching lock_reclaim_threshold"
 
 test_134b() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.54) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.7.54) ]] &&
                skip "Need MDS version at least 2.7.54"
 
        mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir"
@@ -11324,7 +11393,7 @@ function roc_hit_init() {
        test_mkdir $dir
        #use setstripe to do a write to every ost
        for i in $(seq 0 $((OSTCOUNT-1))); do
-               $SETSTRIPE -c 1 -i $i $dir || error "$SETSTRIPE $file failed"
+               $LFS setstripe -c 1 -i $i $dir || error "$LFS setstripe $file failed"
                dd if=/dev/urandom of=$file bs=4k count=4 2>&1 > /dev/null
                idx=$(printf %04x $i)
                BEFORE=$(get_osd_param $list *OST*$idx stats |
@@ -11547,7 +11616,7 @@ dot_lustre_fid_permission_check() {
        mrename $test_dir/$tdir $MOUNT/.lustre/fid &&
                error "rename to $MOUNT/.lustre/fid should fail."
 
-       if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.51) ]
+       if [ $MDS1_VERSION -ge $(version_code 2.3.51) ]
        then            # LU-3547
                local old_obf_mode=$(stat --format="%a" $DIR/.lustre/fid)
                local new_obf_mode=777
@@ -11568,7 +11637,7 @@ dot_lustre_fid_permission_check() {
        $OPENFILE -f O_LOV_DELAY_CREATE:O_CREAT $test_dir/$tfile-2
        fid=$($LFS path2fid $test_dir/$tfile-2)
 
-       if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.50) ]
+       if [ $MDS1_VERSION -ge $(version_code 2.6.50) ]
        then # LU-5424
                echo "cp /etc/passwd $MOUNT/.lustre/fid/$fid"
                cp /etc/passwd $MOUNT/.lustre/fid/$fid ||
@@ -11586,7 +11655,7 @@ dot_lustre_fid_permission_check() {
 }
 
 test_154A() {
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.4.1) ]] &&
                skip "Need MDS version at least 2.4.1"
 
        local tf=$DIR/$tfile
@@ -11604,7 +11673,7 @@ test_154A() {
 run_test 154A "lfs path2fid and fid2path basic checks"
 
 test_154B() {
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.4.1) ]] &&
                skip "Need MDS version at least 2.4.1"
 
        mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
@@ -11629,7 +11698,7 @@ run_test 154B "verify the ll_decode_linkea tool"
 test_154a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.2.51) ]] ||
                skip "Need MDS version at least 2.2.51"
        [ -z "$(which setfacl)" ] && skip_env "must have setfacl tool"
 
@@ -11660,7 +11729,7 @@ test_154b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.2.51) ]] ||
                skip "Need MDS version at least 2.2.51"
 
        local remote_dir=$DIR/$tdir/remote_dir
@@ -11684,7 +11753,7 @@ test_154b() {
 run_test 154b "Open-by-FID for remote directory"
 
 test_154c() {
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.1) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.4.1) ]] &&
                skip "Need MDS version at least 2.4.1"
 
        touch $DIR/$tfile.1 $DIR/$tfile.2 $DIR/$tfile.3
@@ -11713,7 +11782,7 @@ run_test 154c "lfs path2fid and fid2path multiple arguments"
 
 test_154d() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.5.53) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.5.53) ]] &&
                skip "Need MDS version at least 2.5.53"
 
        if remote_mds; then
@@ -11747,7 +11816,7 @@ run_test 154d "Verify open file fid"
 
 test_154e()
 {
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.50) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.6.50) ]] &&
                skip "Need MDS version at least 2.6.50"
 
        if ls -a $MOUNT | grep -q '^\.lustre$'; then
@@ -11838,8 +11907,8 @@ run_test 154f "get parent fids by reading link ea"
 test_154g()
 {
        [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.92) && \
-          $(lustre_version_code client) -gt $(version_code 2.6.99) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.6.92) &&
+          $CLIENT_VERSION -gt $(version_code 2.6.99) ]] ||
                skip "Need MDS version at least 2.6.92"
 
        mkdir -p $DIR/$tdir
@@ -11890,7 +11959,7 @@ test_155_big_load() {
        [ $MAXV -le $large_file_size ] &&
                skip_env "max available OST size needs > $large_file_size KB"
 
-       $SETSTRIPE $file -c 1 -i $MAXI || error "$SETSTRIPE $file failed"
+       $LFS setstripe $file -c 1 -i $MAXI || error "$LFS setstripe $file failed"
 
        dd if=/dev/urandom of=$temp bs=$large_file_size count=1k ||
                error "dd of=$temp bs=$large_file_size count=1k failed"
@@ -12032,8 +12101,9 @@ run_test 155h "Verify big file correctness: read cache:off write_cache:off"
 test_156() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [ "$(facet_fstype ost1)" = "zfs" -a \
-          $(lustre_version_code ost1 -lt $(version_code 2.6.93)) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.6.93) ] &&
+               skip "stats not implemented on old servers"
+       [ "$ost1_FSTYPE" = "zfs" ] &&
                skip "LU-1956/LU-2261: stats not implemented on OSD ZFS"
 
        local CPAGES=3
@@ -12178,7 +12248,7 @@ run_test 156 "Verification of tunables"
 test_160a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.2.0) ] ||
                skip "Need MDS version at least 2.2.0"
 
        changelog_register || error "changelog_register failed"
@@ -12298,7 +12368,7 @@ run_test 160a "changelog sanity"
 test_160b() { # LU-3587
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.2.0) ] ||
                skip "Need MDS version at least 2.2.0"
 
        changelog_register || error "changelog_register failed"
@@ -12324,14 +12394,13 @@ test_160c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
-       local rc=0
-       local server_version=$(lustre_version_code $SINGLEMDS)
-
-       [[ $server_version -gt $(version_code 2.5.57) ]] ||
-               [[ $server_version -gt $(version_code 2.5.1) &&
-                  $server_version -lt $(version_code 2.5.50) ]] ||
+       [[ $MDS1_VERSION -gt $(version_code 2.5.57) ]] ||
+               [[ $MDS1_VERSION -gt $(version_code 2.5.1) &&
+                  $MDS1_VERSION -lt $(version_code 2.5.50) ]] ||
                skip "Need MDS version at least 2.5.58 or 2.5.2+"
 
+       local rc=0
+
        # Registration step
        changelog_register || error "changelog_register failed"
 
@@ -12352,7 +12421,7 @@ test_160d() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.7.60) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.7.60) ]] ||
                skip "Need MDS version at least 2.7.60"
 
        # Registration step
@@ -12399,8 +12468,8 @@ run_test 160e "changelog negative testing (should return errors)"
 
 test_160f() {
        remote_mds_nodsh && skip "remote MDS with nodsh" && return
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.56) ]] ||
-               { skip "Need MDS version at least 2.10.56"; return 0; }
+       [[ $MDS1_VERSION -ge $(version_code 2.10.56) ]] ||
+               skip "Need MDS version at least 2.10.56"
 
        local mdts=$(comma_list $(mdts_nodes))
 
@@ -12513,7 +12582,7 @@ run_test 160f "changelog garbage collect (timestamped users)"
 
 test_160g() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.56) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.10.56) ]] ||
                skip "Need MDS version at least 2.10.56"
 
        local mdts=$(comma_list $(mdts_nodes))
@@ -12540,7 +12609,10 @@ test_160g() {
        local nbcl=$(changelog_dump | wc -l)
        [[ $nbcl -eq 0 ]] && error "no changelogs found"
 
-       for param in "changelog_max_idle_indexes=$((nbcl / 2))" \
+       # reduce the max_idle_indexes value to make sure we exceed it
+       max_ndx=$((nbcl / 2 - 1))
+
+       for param in "changelog_max_idle_indexes=$max_ndx" \
                     "changelog_gc=1" \
                     "changelog_min_gc_interval=2" \
                     "changelog_min_free_cat_entries=3"; do
@@ -12627,8 +12699,8 @@ run_test 160g "changelog garbage collect (old users)"
 
 test_160h() {
        remote_mds_nodsh && skip "remote MDS with nodsh" && return
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.56) ]] ||
-               { skip "Need MDS version at least 2.10.56"; return 0; }
+       [[ $MDS1_VERSION -ge $(version_code 2.10.56) ]] ||
+               skip "Need MDS version at least 2.10.56"
 
        local mdts=$(comma_list $(mdts_nodes))
 
@@ -12941,7 +13013,7 @@ run_test 161b "link ea sanity under remote directory"
 test_161c() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.1.5) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.1.5) ]] &&
                skip "Need MDS version at least 2.1.5"
 
        # define CLF_RENAME_LAST 0x0001
@@ -13014,6 +13086,7 @@ run_test 161c "check CL_RENME[UNLINK] changelog record flags"
 
 test_161d() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
 
        local pid
        local fid
@@ -13143,7 +13216,7 @@ run_test 162b "striped directory path lookup sanity"
 
 # LU-4239: Verify fid2path works with paths 100 or more directories deep
 test_162c() {
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.51) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.7.51) ]] &&
                skip "Need MDS version at least 2.7.51"
 
        local lpath=$tdir.local
@@ -13375,7 +13448,7 @@ run_test 180b "test obdecho directly on obdfilter"
 test_180c() { # LU-2598
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.0) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.4.0) ]] &&
                skip "Need MDS version at least 2.4.0"
 
        do_rpc_nodes $(facet_active_host ost1) load_module obdecho/obdecho &&
@@ -13447,7 +13520,7 @@ run_test 182 "Test parallel modify metadata operations ================"
 test_183() { # LU-2275
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.56) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.3.56) ]] &&
                skip "Need MDS version at least 2.3.56"
 
        mkdir -p $DIR/$tdir || error "creating dir $DIR/$tdir"
@@ -13480,18 +13553,18 @@ test_184a() {
        ref2=/etc/group
        file1=$dir0/f1
        file2=$dir0/f2
-       $SETSTRIPE -c1 $file1
+       $LFS setstripe -c1 $file1
        cp $ref1 $file1
-       $SETSTRIPE -c2 $file2
+       $LFS setstripe -c2 $file2
        cp $ref2 $file2
-       gen1=$($GETSTRIPE -g $file1)
-       gen2=$($GETSTRIPE -g $file2)
+       gen1=$($LFS getstripe -g $file1)
+       gen2=$($LFS getstripe -g $file2)
 
        $LFS swap_layouts $file1 $file2 || error "swap of file layout failed"
-       gen=$($GETSTRIPE -g $file1)
+       gen=$($LFS getstripe -g $file1)
        [[ $gen1 != $gen ]] ||
                "Layout generation on $file1 does not change"
-       gen=$($GETSTRIPE -g $file2)
+       gen=$($LFS getstripe -g $file2)
        [[ $gen2 != $gen ]] ||
                "Layout generation on $file2 does not change"
 
@@ -13513,12 +13586,12 @@ test_184b() {
        dir1=$dir0/d1
        dir2=$dir0/d2
        mkdir $dir1 $dir2
-       $SETSTRIPE -c1 $file1
-       $SETSTRIPE -c2 $file2
-       $SETSTRIPE -c1 $file3
+       $LFS setstripe -c1 $file1
+       $LFS setstripe -c2 $file2
+       $LFS setstripe -c1 $file3
        chown $RUNAS_ID $file3
-       gen1=$($GETSTRIPE -g $file1)
-       gen2=$($GETSTRIPE -g $file2)
+       gen1=$($LFS getstripe -g $file1)
+       gen2=$($LFS getstripe -g $file2)
 
        $LFS swap_layouts $dir1 $dir2 &&
                error "swap of directories layouts should fail"
@@ -13616,7 +13689,7 @@ test_184d() {
 run_test 184d "allow stripeless layouts swap"
 
 test_184e() {
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.94) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.6.94) ]] ||
                skip "Need MDS version at least 2.6.94"
        check_swap_layouts_support
        [ -z "$(which getfattr 2>/dev/null)" ] &&
@@ -13667,7 +13740,7 @@ run_test 184f "IOC_MDC_GETFILEINFO for files with long names but no striping"
 
 test_185() { # LU-2441
        # LU-3553 - no volatile file support in old servers
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.60) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.3.60) ]] ||
                skip "Need MDS version at least 2.3.60"
 
        mkdir -p $DIR/$tdir || error "creating dir $DIR/$tdir"
@@ -13704,7 +13777,7 @@ run_test 185 "Volatile file support"
 
 test_187a() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.3.0) ] &&
                skip "Need MDS version at least 2.3.0"
 
        local dir0=$DIR/$tdir/$testnum
@@ -13725,7 +13798,7 @@ run_test 187a "Test data version change"
 
 test_187b() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.3.0) ] &&
                skip "Need MDS version at least 2.3.0"
 
        local dir0=$DIR/$tdir/$testnum
@@ -13811,7 +13884,7 @@ default_attr() {
 
 # usage: check_default_stripe_attr
 check_default_stripe_attr() {
-       ACTUAL=$($GETSTRIPE $* $DIR/$tdir)
+       ACTUAL=$($LFS getstripe $* $DIR/$tdir)
        case $1 in
        --stripe-count|-c)
                [ -n "$2" ] && EXPECTED=0 || EXPECTED=$(default_attr count);;
@@ -13829,7 +13902,7 @@ check_default_stripe_attr() {
 
 test_204a() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-count 0 --stripe-size 0 --stripe-index -1 $DIR/$tdir
+       $LFS setstripe --stripe-count 0 --stripe-size 0 --stripe-index -1 $DIR/$tdir
 
        check_default_stripe_attr --stripe-count
        check_default_stripe_attr --stripe-size
@@ -13839,7 +13912,7 @@ run_test 204a "Print default stripe attributes"
 
 test_204b() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-count 1 $DIR/$tdir
+       $LFS setstripe --stripe-count 1 $DIR/$tdir
 
        check_default_stripe_attr --stripe-size
        check_default_stripe_attr --stripe-index
@@ -13848,7 +13921,7 @@ run_test 204b "Print default stripe size and offset"
 
 test_204c() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-size 65536 $DIR/$tdir
+       $LFS setstripe --stripe-size 65536 $DIR/$tdir
 
        check_default_stripe_attr --stripe-count
        check_default_stripe_attr --stripe-index
@@ -13857,7 +13930,7 @@ run_test 204c "Print default stripe count and offset"
 
 test_204d() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-index 0 $DIR/$tdir
+       $LFS setstripe --stripe-index 0 $DIR/$tdir
 
        check_default_stripe_attr --stripe-count
        check_default_stripe_attr --stripe-size
@@ -13866,7 +13939,7 @@ run_test 204d "Print default stripe count and size"
 
 test_204e() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE -d $DIR/$tdir
+       $LFS setstripe -d $DIR/$tdir
 
        check_default_stripe_attr --stripe-count --raw
        check_default_stripe_attr --stripe-size --raw
@@ -13876,7 +13949,7 @@ run_test 204e "Print raw stripe attributes"
 
 test_204f() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-count 1 $DIR/$tdir
+       $LFS setstripe --stripe-count 1 $DIR/$tdir
 
        check_default_stripe_attr --stripe-size --raw
        check_default_stripe_attr --stripe-index --raw
@@ -13885,7 +13958,7 @@ run_test 204f "Print raw stripe size and offset"
 
 test_204g() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-size 65536 $DIR/$tdir
+       $LFS setstripe --stripe-size 65536 $DIR/$tdir
 
        check_default_stripe_attr --stripe-count --raw
        check_default_stripe_attr --stripe-index --raw
@@ -13894,7 +13967,7 @@ run_test 204g "Print raw stripe count and offset"
 
 test_204h() {
        test_mkdir $DIR/$tdir
-       $SETSTRIPE --stripe-index 0 $DIR/$tdir
+       $LFS setstripe --stripe-index 0 $DIR/$tdir
 
        check_default_stripe_attr --stripe-count --raw
        check_default_stripe_attr --stripe-size --raw
@@ -13979,7 +14052,7 @@ jobstats_set() {
 
 test_205() { # Job stats
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.7.1) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.7.1) ]] ||
                skip "Need MDS version with at least 2.7.1"
        remote_mgs_nodsh && skip "remote MGS with nodsh"
        remote_mds_nodsh && skip "remote MDS with nodsh"
@@ -13991,7 +14064,7 @@ test_205() { # Job stats
        local old_jobenv=$($LCTL get_param -n jobid_var)
        [ $old_jobenv != $JOBENV ] && jobstats_set $JOBENV
 
-       if [[ $PERM_CMD = *"set_param -P"* ]]; then
+       if [[ $PERM_CMD == *"set_param -P"* ]]; then
                stack_trap "do_facet mgs $PERM_CMD jobid_var=$old_jobenv" EXIT
        else
                stack_trap "do_facet mgs $PERM_CMD \
@@ -14028,7 +14101,7 @@ test_205() { # Job stats
        verify_jobstats "$cmd" "$SINGLEMDS"
        # create all files on OST0000 so verify_jobstats can find OST stats
        # open & close
-       cmd="$SETSTRIPE -i 0 -c 1 $DIR/$tfile"
+       cmd="$LFS setstripe -i 0 -c 1 $DIR/$tfile"
        verify_jobstats "$cmd" "$SINGLEMDS"
        # setattr
        cmd="touch $DIR/$tfile"
@@ -14057,7 +14130,7 @@ test_205() { # Job stats
            grep -c "job_id.*mkdir") -gt 1 ] && error "old jobstats not expired"
 
        # Ensure that jobid are present in changelog (if supported by MDS)
-       if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.52) ];then
+       if [ $MDS1_VERSION -ge $(version_code 2.6.52) ];then
                changelog_dump | tail -10
                jobids=$(changelog_dump | tail -9 | grep -c "j=")
                [ $jobids -eq 9 ] ||
@@ -14084,7 +14157,7 @@ run_test 205 "Verify job stats"
 # LU-1480, LU-1773 and LU-1657
 test_206() {
        mkdir -p $DIR/$tdir
-       $SETSTRIPE -c -1 $DIR/$tdir
+       $LFS setstripe -c -1 $DIR/$tdir
 #define OBD_FAIL_LOV_INIT 0x1403
        $LCTL set_param fail_loc=0xa0001403
        $LCTL set_param fail_val=1
@@ -14133,7 +14206,7 @@ test_208() {
        # is done, this test suite should be revised. - Jinshan
 
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.4.52) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.4.52) ]] ||
                skip "Need MDS version at least 2.4.52"
 
        echo "==== test 1: verify get lease work"
@@ -14491,7 +14564,7 @@ test_220() { #LU-325
        create_pool $FSNAME.$TESTNAME || return 1
        do_facet mgs $LCTL pool_add $FSNAME.$TESTNAME $OST || return 2
 
-       $SETSTRIPE $DIR/$tdir -i $OSTIDX -c 1 -p $FSNAME.$TESTNAME
+       $LFS setstripe $DIR/$tdir -i $OSTIDX -c 1 -p $FSNAME.$TESTNAME
 
        MDSOBJS=$((last_id - next_id))
        echo "preallocated objects on MDS is $MDSOBJS" "($last_id - $next_id)"
@@ -14638,12 +14711,12 @@ test_224c() { # LU-6441
        set_persistent_param_and_check client "$test_at" "$param_at" 0
        set_persistent_param_and_check client "$test_timeout" "$param_timeout" 5
 
-       #define OBD_FAIL_PTLRPC_CLIENT_BULK_CB3   0x520
-       do_facet ost1 $LCTL set_param fail_loc=0x520
+       #define OBD_FAIL_PTLRPC_CLIENT_BULK_CB3 0x520
+       do_facet ost1 "$LCTL set_param fail_loc=0x520"
        $LFS setstripe -c 1 -i 0 $DIR/$tfile
        dd if=/dev/zero of=$DIR/$tfile bs=8MB count=1
        sync
-       do_facet ost1 $LCTL set_param fail_loc=0
+       do_facet ost1 "$LCTL set_param fail_loc=0"
 
        set_persistent_param_and_check client "$test_at" "$param_at" $at_max
        set_persistent_param_and_check client "$test_timeout" "$param_timeout" \
@@ -14661,7 +14734,7 @@ test_225a () {
        if [ -z ${MDSSURVEY} ]; then
                skip_env "mds-survey not found"
        fi
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.2.51) ] ||
                skip "Need MDS version at least 2.2.51"
 
        local mds=$(facet_host $SINGLEMDS)
@@ -14685,7 +14758,7 @@ test_225b () {
        if [ -z ${MDSSURVEY} ]; then
                skip_env "mds-survey not found"
        fi
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.51) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.2.51) ] ||
                skip "Need MDS version at least 2.2.51"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
@@ -14795,8 +14868,7 @@ run_test 227 "running truncated executable does not cause OOM"
 test_228a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
 
        local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
        local myDIR=$DIR/$tdir
@@ -14837,8 +14909,7 @@ run_test 228a "try to reuse idle OI blocks"
 test_228b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
 
        local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
        local myDIR=$DIR/$tdir
@@ -14887,8 +14958,7 @@ run_test 228b "idle OI blocks can be reused after MDT restart"
 test_228c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
 
        local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
        local myDIR=$DIR/$tdir
@@ -14933,7 +15003,7 @@ run_test 228c "NOT shrink the last entry in OI index node to recycle idle leaf"
 test_229() { # LU-2482, LU-3448
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.53) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.4.53) ] &&
                skip "No HSM $(lustre_build_version $SINGLEMDS) MDS < 2.4.53"
 
        rm -f $DIR/$tfile
@@ -14942,12 +15012,13 @@ test_229() { # LU-2482, LU-3448
        $MULTIOP $DIR/$tfile H2c ||
                error "failed to create file with released layout"
 
-       $GETSTRIPE -v $DIR/$tfile
+       $LFS getstripe -v $DIR/$tfile
 
-       local pattern=$($GETSTRIPE -L $DIR/$tfile)
+       local pattern=$($LFS getstripe -L $DIR/$tfile)
        [ X"$pattern" = X"released" ] || error "pattern error ($pattern)"
 
-       local stripe_count=$($GETSTRIPE -c $DIR/$tfile) || error "getstripe"
+       local stripe_count=$($LFS getstripe -c $DIR/$tfile) ||
+               error "getstripe"
        [ $stripe_count -eq 2 ] || error "stripe count not 2 ($stripe_count)"
        stat $DIR/$tfile || error "failed to stat released file"
 
@@ -14965,7 +15036,7 @@ run_test 229 "getstripe/stat/rm/attr changes work on released files"
 test_230a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local MDTIDX=1
@@ -14993,7 +15064,7 @@ run_test 230a "Create remote directory and files under the remote directory"
 test_230b() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local MDTIDX=1
@@ -15025,8 +15096,8 @@ test_230b() {
        local old_file_mode=$(stat -c%f $migrate_dir/$tfile)
 
        mkdir -p $migrate_dir/dir_default_stripe2
-       $SETSTRIPE -c 2 $migrate_dir/dir_default_stripe2
-       $SETSTRIPE -c 2 $migrate_dir/${tfile}_stripe2
+       $LFS setstripe -c 2 $migrate_dir/dir_default_stripe2
+       $LFS setstripe -c 2 $migrate_dir/${tfile}_stripe2
 
        mkdir -p $other_dir
        ln $migrate_dir/$tfile $other_dir/luna
@@ -15161,7 +15232,7 @@ test_230c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local MDTIDX=1
@@ -15242,10 +15313,10 @@ run_test 230c "check directory accessiblity if migration failed"
 test_230d() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
        # LU-11235
-       [ "$(facet_fstype mds1)" == "zfs" ] && skip "skip ZFS backend"
+       [ "$mds1_FSTYPE" == "zfs" ] && skip "skip ZFS backend"
 
        local migrate_dir=$DIR/$tdir/migrate_dir
        local old_index
@@ -15301,7 +15372,7 @@ run_test 230d "check migrate big directory"
 test_230e() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local i
@@ -15349,7 +15420,7 @@ run_test 230e "migrate mulitple local link files"
 test_230f() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local a_fid
@@ -15400,7 +15471,7 @@ run_test 230f "migrate mulitple remote link files"
 test_230g() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        mkdir -p $DIR/$tdir/migrate_dir
@@ -15414,7 +15485,7 @@ run_test 230g "migrate dir to non-exist MDT"
 test_230h() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        local mdt_index
@@ -15438,7 +15509,7 @@ run_test 230h "migrate .. and root"
 test_230i() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        mkdir -p $DIR/$tdir/migrate_dir
@@ -15453,7 +15524,7 @@ run_test 230i "lfs migrate -m tolerates trailing slashes"
 
 test_230j() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
                skip "Need MDS version at least 2.11.52"
 
        $LFS mkdir -m 0 -c 1 $DIR/$tdir || error "mkdir $tdir failed"
@@ -15470,7 +15541,7 @@ run_test 230j "DoM file data not changed after dir migration"
 
 test_230k() {
        [ $MDSCOUNT -lt 4 ] && skip "needs >= 4 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
                skip "Need MDS version at least 2.11.56"
 
        local total=20
@@ -15518,6 +15589,18 @@ test_230k() {
 }
 run_test 230k "file data not changed after dir migration"
 
+test_230l() {
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+       [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56"
+
+       $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "mkdir failed"
+       createmany -o $DIR/$tdir/f___________________________________ 1000 ||
+               error "create files under remote dir failed $i"
+       $LFS migrate -m 1 $DIR/$tdir || error "migrate failed"
+}
+run_test 230l "readdir between MDTs won't crash"
+
 test_231a()
 {
        # For simplicity this test assumes that max_pages_per_rpc
@@ -15596,7 +15679,7 @@ test_232a() {
 run_test 232a "failed lock should not block umount"
 
 test_232b() {
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.58) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.10.58) ] ||
                skip "Need MDS version at least 2.10.58"
 
        mkdir -p $DIR/$tdir
@@ -15620,7 +15703,7 @@ test_232b() {
 run_test 232b "failed data version lock should not block umount"
 
 test_233a() {
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.3.64) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.3.64) ] ||
                skip "Need MDS version at least 2.3.64"
        [ -n "$FILESET" ] && skip_env "SKIP due to FILESET set"
 
@@ -15632,7 +15715,7 @@ test_233a() {
 run_test 233a "checking that OBF of the FS root succeeds"
 
 test_233b() {
-       [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.5.90) ] ||
+       [ $MDS1_VERSION -ge $(version_code 2.5.90) ] ||
                skip "Need MDS version at least 2.5.90"
        [ -n "$FILESET" ] && skip_env "SKIP due to FILESET set"
 
@@ -15668,7 +15751,7 @@ test_234() {
 run_test 234 "xattr cache should not crash on ENOMEM"
 
 test_235() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.52) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.4.52) ] &&
                skip "Need MDS version at least 2.4.52"
 
        flock_deadlock $DIR/$tfile
@@ -15694,9 +15777,9 @@ test_236() {
        local file2=$DIR/$tdir/f2
 
        test_mkdir -c1 $DIR/$tdir
-       $SETSTRIPE -c 1 $file1 || error "cannot setstripe on '$file1': rc = $?"
+       $LFS setstripe -c 1 $file1 || error "cannot setstripe on '$file1': rc = $?"
        cp $ref1 $file1 || error "cp $ref1 $file1 failed: rc = $?"
-       $SETSTRIPE -c 2 $file2 || error "cannot setstripe on '$file2': rc = $?"
+       $LFS setstripe -c 2 $file2 || error "cannot setstripe on '$file2': rc = $?"
        cp $ref2 $file2 || error "cp $ref2 $file2 failed: rc = $?"
        local fd=$(free_fd)
        local cmd="exec $fd<>$file2"
@@ -15715,11 +15798,9 @@ run_test 236 "Layout swap on open unlinked file"
 
 # LU-4659 linkea consistency
 test_238() {
-       local server_version=$(lustre_version_code $SINGLEMDS)
-
-       [[ $server_version -gt $(version_code 2.5.57) ]] ||
-               [[ $server_version -gt $(version_code 2.5.1) &&
-                  $server_version -lt $(version_code 2.5.50) ]] ||
+       [[ $MDS1_VERSION -gt $(version_code 2.5.57) ]] ||
+               [[ $MDS1_VERSION -gt $(version_code 2.5.1) &&
+                  $MDS1_VERSION -lt $(version_code 2.5.50) ]] ||
                skip "Need MDS version at least 2.5.58 or 2.5.2+"
 
        touch $DIR/$tfile
@@ -15738,7 +15819,7 @@ test_238() {
 run_test 238 "Verify linkea consistency"
 
 test_239A() { # was test_239
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.5.60) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.5.60) ] &&
                skip "Need MDS version at least 2.5.60"
 
        local list=$(comma_list $(mdts_nodes))
@@ -15746,7 +15827,7 @@ test_239A() { # was test_239
        mkdir -p $DIR/$tdir
        createmany -o $DIR/$tdir/f- 5000
        unlinkmany $DIR/$tdir/f- 5000
-       [ $(lustre_version_code $SINGLEMDS) -gt $(version_code 2.10.53) ] &&
+       [ $MDS1_VERSION -gt $(version_code 2.10.4) ] &&
                do_nodes $list "lctl set_param -n osp.*.force_sync=1"
        changes=$(do_nodes $list "lctl get_param -n osp.*MDT*.sync_changes \
                        osp.*MDT*.sync_in_flight" | calc_sum)
@@ -15907,7 +15988,7 @@ run_test 245 "check mdc connection flag/data: multiple modify RPCs"
 
 test_246() { # LU-7371
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [ $(lustre_version_code ost1) -lt $(version_code 2.7.62) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.7.62) ] &&
                skip "Need OST version >= 2.7.62"
 
        do_facet ost1 $LCTL set_param fail_val=4095
@@ -16066,11 +16147,11 @@ test_248() {
 run_test 248 "fast read verification"
 
 test_249() { # LU-7890
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.53) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.8.53) ] &&
                skip "Need at least version 2.8.54"
 
        rm -f $DIR/$tfile
-       $SETSTRIPE -c 1 $DIR/$tfile
+       $LFS setstripe -c 1 $DIR/$tfile
        # Offset 2T == 4k * 512M
        dd if=/dev/zero of=$DIR/$tfile bs=4k count=1 seek=512M ||
                error "dd to 2T offset failed"
@@ -16078,10 +16159,10 @@ test_249() { # LU-7890
 run_test 249 "Write above 2T file size"
 
 test_250() {
-       [ "$(facet_fstype ost$(($($GETSTRIPE -i $DIR/$tfile) + 1)))" = "zfs" ] \
+       [ "$(facet_fstype ost$(($($LFS getstripe -i $DIR/$tfile) + 1)))" = "zfs" ] \
         && skip "no 16TB file size limit on ZFS"
 
-       $SETSTRIPE -c 1 $DIR/$tfile
+       $LFS setstripe -c 1 $DIR/$tfile
        # ldiskfs extent file size limit is (16TB - 4KB - 1) bytes
        local size=$((16 * 1024 * 1024 * 1024 * 1024 - 4096 - 1))
        $TRUNCATE $DIR/$tfile $size || error "truncate $tfile to $size failed"
@@ -16092,7 +16173,7 @@ test_250() {
 run_test 250 "Write above 16T limit"
 
 test_251() {
-       $SETSTRIPE -c -1 -S 1048576 $DIR/$tfile
+       $LFS setstripe -c -1 -S 1048576 $DIR/$tfile
 
        #define OBD_FAIL_LLITE_LOST_LAYOUT 0x1407
        #Skip once - writing the first stripe will succeed
@@ -16111,8 +16192,7 @@ run_test 251 "Handling short read and write correctly"
 test_252() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
        remote_ost_nodsh && skip "remote OST with nodsh"
-       if [ "$(facet_fstype ost1)" != "ldiskfs" -o \
-            "$(facet_fstype mds1)" != "ldiskfs" ]; then
+       if [ "$ost1_FSTYPE" != "ldiskfs" -o "$mds1_FSTYPE" != "ldiskfs" ]; then
                skip_env "ldiskfs only test"
        fi
 
@@ -16225,7 +16305,7 @@ test_253() {
                lov.$FSNAME-*.pools.$TESTNAME | sort -u |
                grep $ost_name" "$ost_name""_UUID" $((TIMEOUT/2)) ||
                error "Client can not see the pool"
-       $SETSTRIPE $DIR/$tdir -i $ostidx -c 1 -p $FSNAME.$TESTNAME ||
+       $LFS setstripe $DIR/$tdir -i $ostidx -c 1 -p $FSNAME.$TESTNAME ||
                error "Setstripe failed"
 
        dd if=/dev/zero of=$DIR/$tdir/0 bs=1M count=10
@@ -16427,7 +16507,7 @@ ladvise_willread_performance()
        # the test won't work on ZFS until it supports 'ladvise dontneed', but
        # it is still good to run until then to exercise 'ladvise willread'
        ! $LFS ladvise -a dontneed $DIR/$tfile &&
-               [ "$(facet_fstype ost1)" = "zfs" ] &&
+               [ "$ost1_FSTYPE" = "zfs" ] &&
                echo "osd-zfs does not support dontneed or drop_caches" &&
                return 0
 
@@ -16438,7 +16518,7 @@ ladvise_willread_performance()
 }
 
 test_255a() {
-       [ $(lustre_version_code ost1) -lt $(version_code 2.8.54) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.8.54) ] &&
                skip "lustre < 2.8.54 does not support ladvise "
        remote_ost_nodsh && skip "remote OST with nodsh"
 
@@ -16525,7 +16605,7 @@ facet_meminfo() {
 }
 
 test_255b() {
-       [ $(lustre_version_code ost1) -lt $(version_code 2.8.54) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.8.54) ] &&
                skip "lustre < 2.8.54 does not support ladvise "
        remote_ost_nodsh && skip "remote OST with nodsh"
 
@@ -16538,7 +16618,7 @@ test_255b() {
                skip "ladvise ioctl is not supported"
 
        ! $LFS ladvise -a dontneed $DIR/$tfile &&
-               [ "$(facet_fstype ost1)" = "zfs" ] &&
+               [ "$ost1_FSTYPE" = "zfs" ] &&
                skip "zfs-osd does not support 'ladvise dontneed'"
 
        local size_mb=100
@@ -16588,7 +16668,7 @@ test_255b() {
 run_test 255b "check 'lfs ladvise -a dontneed'"
 
 test_255c() {
-       [ $(lustre_version_code ost1) -lt $(version_code 2.10.50) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.10.50) ] &&
                skip "lustre < 2.10.53 does not support lockahead"
 
        local count
@@ -16598,7 +16678,7 @@ test_255c() {
        local rc
 
        test_mkdir -p $DIR/$tdir
-       $SETSTRIPE -i 0 $DIR/$tdir
+       $LFS setstripe -i 0 $DIR/$tdir
 
        #test 10 returns only success/failure
        i=10
@@ -16638,7 +16718,7 @@ test_255c() {
                cancel_lru_locks osc
 
                count=$($LCTL get_param -n \
-                      ldlm.namespaces.$FSNAME-OST0000*osc-f*.lock_unused_count)
+                      ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
 
                lockahead_test -d $DIR/$tdir -t $i -f $tfile
                rc=$?
@@ -16647,7 +16727,7 @@ test_255c() {
                fi
 
                new_count=$($LCTL get_param -n \
-                      ldlm.namespaces.$FSNAME-OST0000*osc-f*.lock_unused_count)
+                      ldlm.namespaces.$FSNAME-OST0000*osc-[-0-9a-f]*.lock_unused_count)
                difference="$((new_count - count))"
 
                # Test 15 output is divided by 100 to map down to valid return
@@ -16674,8 +16754,7 @@ run_test 255c "suite of ladvise lockahead tests"
 test_256() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip "ldiskfs only test"
        changelog_users $SINGLEMDS | grep "^cl" &&
                skip "active changelog user"
 
@@ -16729,7 +16808,7 @@ run_test 256 "Check llog delete for empty and not full state"
 
 test_257() {
        remote_mds_nodsh && skip "remote MDS with nodsh"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.55) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.8.55) ]] &&
                skip "Need MDS version at least 2.8.55"
 
        test_mkdir $DIR/$tdir
@@ -16747,6 +16826,7 @@ test_257() {
        stop $facet || error "stop MDS failed"
        start $facet $(mdsdevname $((mdtidx + 1))) $MDS_MOUNT_OPTS ||
                error "start MDS fail"
+       wait_recovery_complete $facet
 }
 run_test 257 "xattr locks are not lost"
 
@@ -16788,8 +16868,7 @@ test_259() {
        local before
        local after
 
-       [ "$(facet_fstype mds1)" != "ldiskfs" ] &&
-               skip "ldiskfs only test" && return
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip "ldiskfs only test"
 
        stack_trap "rm -f $file" EXIT
 
@@ -16832,7 +16911,7 @@ run_test 260 "Check mdc_close fail"
 
 ### Data-on-MDT sanity tests ###
 test_270a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55 for DoM"
 
        # create DoM file
@@ -16947,7 +17026,7 @@ test_270a() {
 run_test 270a "DoM: basic functionality tests"
 
 test_270b() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dom=$DIR/$tdir/dom_file
@@ -16972,7 +17051,7 @@ test_270b() {
 run_test 270b "DoM: maximum size overflow checks for DoM-only file"
 
 test_270c() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        mkdir -p $DIR/$tdir
@@ -16980,7 +17059,7 @@ test_270c() {
 
        # check files inherit DoM EA
        touch $DIR/$tdir/first
-       [ $($GETSTRIPE -L $DIR/$tdir/first) == "mdt" ] ||
+       [ $($LFS getstripe -L $DIR/$tdir/first) == "mdt" ] ||
                error "bad pattern"
        [ $($LFS getstripe -c $DIR/$tdir/first) == 0 ] ||
                error "bad stripe count"
@@ -17001,7 +17080,7 @@ test_270c() {
 run_test 270c "DoM: DoM EA inheritance tests"
 
 test_270d() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        mkdir -p $DIR/$tdir
@@ -17023,7 +17102,7 @@ test_270d() {
 run_test 270d "DoM: change striping from DoM to RAID0"
 
 test_270e() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        mkdir -p $DIR/$tdir/dom
@@ -17064,7 +17143,7 @@ test_270e() {
 run_test 270e "DoM: lfs find with DoM files test"
 
 test_270f() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local mdtname=${FSNAME}-MDT0000-mdtlov
@@ -17146,7 +17225,7 @@ test_270f() {
 run_test 270f "DoM: maximum DoM stripe size checks"
 
 test_271a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dom=$DIR/$tdir/dom
@@ -17166,7 +17245,7 @@ test_271a() {
 run_test 271a "DoM: data is cached for read after write"
 
 test_271b() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dom=$DIR/$tdir/dom
@@ -17188,7 +17267,7 @@ test_271b() {
 run_test 271b "DoM: no glimpse RPC for stat (DoM only file)"
 
 test_271ba() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dom=$DIR/$tdir/dom
@@ -17226,7 +17305,7 @@ get_mdc_stats() {
 }
 
 test_271c() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
                skip "Need MDS version at least 2.10.55"
 
        local dom=$DIR/$tdir/dom
@@ -17271,8 +17350,8 @@ cleanup_271def_tests() {
 }
 
 test_271d() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.57) ] &&
-               skip "Need MDS version at least 2.10.57" && return
+       [ $MDS1_VERSION -lt $(version_code 2.10.57) ] &&
+               skip "Need MDS version at least 2.10.57"
 
        local dom=$DIR/$tdir/dom
        local tmp=$TMP/$tfile
@@ -17282,7 +17361,7 @@ test_271d() {
 
        $LFS setstripe -E 1024K -L mdt $DIR/$tdir
 
-       local mdtidx=$($GETSTRIPE -M $DIR/$tdir)
+       local mdtidx=$($LFS getstripe -M $DIR/$tdir)
 
        cancel_lru_locks mdc
        dd if=/dev/urandom of=$tmp bs=1000 count=1
@@ -17327,8 +17406,8 @@ test_271d() {
 run_test 271d "DoM: read on open (1K file in reply buffer)"
 
 test_271e() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.57) ] &&
-               skip "Need MDS version at least 2.10.57" && return
+       [ $MDS1_VERSION -lt $(version_code 2.10.57) ] &&
+               skip "Need MDS version at least 2.10.57"
 
        local dom=$DIR/$tdir/dom
        local tmp=$TMP/${tfile}.data
@@ -17338,7 +17417,7 @@ test_271e() {
 
        $LFS setstripe -E 1024K -L mdt $DIR/$tdir
 
-       local mdtidx=$($GETSTRIPE -M $DIR/$tdir)
+       local mdtidx=$($LFS getstripe -M $DIR/$tdir)
 
        cancel_lru_locks mdc
        dd if=/dev/urandom of=$tmp bs=30K count=1
@@ -17382,8 +17461,8 @@ test_271e() {
 run_test 271e "DoM: read on open (30K file with reply buffer adjusting)"
 
 test_271f() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.57) ] &&
-               skip "Need MDS version at least 2.10.57" && return
+       [ $MDS1_VERSION -lt $(version_code 2.10.57) ] &&
+               skip "Need MDS version at least 2.10.57"
 
        local dom=$DIR/$tdir/dom
        local tmp=$TMP/$tfile
@@ -17393,7 +17472,7 @@ test_271f() {
 
        $LFS setstripe -E 1024K -L mdt $DIR/$tdir
 
-       local mdtidx=$($GETSTRIPE -M $DIR/$tdir)
+       local mdtidx=$($LFS getstripe -M $DIR/$tdir)
 
        cancel_lru_locks mdc
        dd if=/dev/urandom of=$tmp bs=200000 count=1
@@ -17436,7 +17515,7 @@ test_271f() {
 run_test 271f "DoM: read on open (200K file and read tail)"
 
 test_272a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.50) ] &&
                skip "Need MDS version at least 2.11.50"
 
        local dom=$DIR/$tdir/dom
@@ -17450,19 +17529,18 @@ test_272a() {
        $LFS migrate -E 256K -L mdt -E -1 -c2 $dom ||
                error "failed to migrate to the same DoM component"
 
-       [ $($LFS getstripe -c $dom) -eq 2 ] ||
-               error "layout was not changed silently"
-
        local new_md5=$(md5sum $dom)
 
-       [ "$old_md5" != "$new_md5" ] &&
+       [ "$old_md5" == "$new_md5" ] ||
                error "md5sum differ: $old_md5, $new_md5"
-       return 0
+
+       [ $($LFS getstripe -c $dom) -eq 2 ] ||
+               error "migrate stripe count bad: $(LFS getstripe -c $dom) != 2"
 }
 run_test 272a "DoM migration: new layout with the same DOM component"
 
 test_272b() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.50) ] &&
                skip "Need MDS version at least 2.11.50"
 
        local dom=$DIR/$tdir/dom
@@ -17504,7 +17582,7 @@ test_272b() {
 run_test 272b "DoM migration: DOM file to the OST-striped file (plain)"
 
 test_272c() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.50) ] &&
                skip "Need MDS version at least 2.11.50"
 
        local dom=$DIR/$tdir/$tfile
@@ -17544,7 +17622,7 @@ test_272c() {
 run_test 272c "DoM migration: DOM file to the OST-striped file (composite)"
 
 test_273a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.11.50) ] &&
                skip "Need MDS version at least 2.11.50"
 
        # Layout swap cannot be done if either file has DOM component,
@@ -17571,7 +17649,7 @@ run_test 273a "DoM: layout swapping should fail with DOM"
 
 test_275() {
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [ $(lustre_version_code ost1) -lt $(version_code 2.10.57) ] &&
+       [ $OST1_VERSION -lt $(version_code 2.10.57) ] &&
                skip "Need OST version >= 2.10.57"
 
        local file=$DIR/$tfile
@@ -17694,7 +17772,7 @@ test_striped_dir() {
 }
 
 test_300a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.0) ] &&
                skip "skipped for lustre < 2.7.0"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
@@ -17705,7 +17783,7 @@ test_300a() {
 run_test 300a "basic striped dir sanity test"
 
 test_300b() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.0) ] &&
                skip "skipped for lustre < 2.7.0"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
@@ -17734,7 +17812,7 @@ test_300b() {
 run_test 300b "check ctime/mtime for striped dir"
 
 test_300c() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.0) ] &&
                skip "skipped for lustre < 2.7.0"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
@@ -17760,7 +17838,7 @@ test_300c() {
 run_test 300c "chown && check ls under striped directory"
 
 test_300d() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.0) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.0) ] &&
                skip "skipped for lustre < 2.7.0"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
@@ -17769,7 +17847,7 @@ test_300d() {
        local file
 
        mkdir -p $DIR/$tdir
-       $SETSTRIPE -c 2 $DIR/$tdir
+       $LFS setstripe -c 2 $DIR/$tdir
 
        #local striped directory
        $LFS setdirstripe -i 0 -c 2 -H all_char $DIR/$tdir/striped_dir ||
@@ -17794,7 +17872,7 @@ test_300d() {
 run_test 300d "check default stripe under striped directory"
 
 test_300e() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
@@ -17843,7 +17921,7 @@ run_test 300e "check rename under striped directory"
 test_300f() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local stripe_count
@@ -17932,7 +18010,7 @@ test_300_check_default_striped_dir()
 
 test_300g() {
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local dir
@@ -17984,7 +18062,7 @@ run_test 300g "check default striped directory for normal directory"
 
 test_300h() {
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local dir
@@ -18015,7 +18093,7 @@ run_test 300h "check default striped directory for striped directory"
 test_300i() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local stripe_count
@@ -18070,7 +18148,7 @@ run_test 300i "client handle unknown hash type striped directory"
 test_300j() {
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local stripe_count
@@ -18097,9 +18175,14 @@ run_test 300j "test large update record"
 test_300k() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
+       # this test needs a huge transaction
+       local kb
+       kb=$(do_facet $SINGLEMDS lctl get_param -n osd*.lustre-MDT0000.kbytestotal)
+       [ $kb -lt $((1024*1024)) ] && skip "too small mds: $kb"
+
        local stripe_count
        local file
 
@@ -18123,7 +18206,7 @@ run_test 300k "test large striped directory"
 test_300l() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local stripe_index
@@ -18147,7 +18230,7 @@ run_test 300l "non-root user to create dir under striped dir with stale layout"
 test_300m() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -ge 2 ] && skip_env "Only for single MDT"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        mkdir -p $DIR/$tdir/striped_dir
@@ -18189,7 +18272,7 @@ cleanup_300n() {
 test_300n() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
@@ -18232,7 +18315,7 @@ run_test 300n "non-root user to create dir under striped dir with default EA"
 test_300o() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.7.55) ] &&
                skip "Need MDS version at least 2.7.55"
 
        local numfree1
@@ -18305,6 +18388,31 @@ test_300q() {
 }
 run_test 300q "create remote directory under orphan directory"
 
+test_300r() {
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.7.55) ] &&
+               skip "Need MDS version at least 2.7.55" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+       mkdir $DIR/$tdir
+
+       $LFS setdirstripe -i 0 -c -1 $DIR/$tdir/striped_dir ||
+               error "set striped dir error"
+
+       $LFS getdirstripe $DIR/$tdir/striped_dir ||
+               error "getstripeddir fails"
+
+       local stripe_count
+       stripe_count=$($LFS getdirstripe $DIR/$tdir/striped_dir |
+                     awk '/lmv_stripe_count:/ { print $2 }')
+
+       [ $MDSCOUNT -ne $stripe_count ] &&
+               error "wrong stripe count $stripe_count expected $MDSCOUNT"
+
+       rm -rf $DIR/$tdir/striped_dir ||
+               error "unlink striped dir fails"
+}
+run_test 300r "test -1 striped directory"
+
 prepare_remote_file() {
        mkdir $DIR/$tdir/src_dir ||
                error "create remote source failed"
@@ -18388,40 +18496,39 @@ run_test 310c "open-unlink remote file with multiple links"
 test_311() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
        [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.54) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.8.54) ] &&
                skip "lustre < 2.8.54 does not contain LU-4825 fix"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
        local old_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
+       local mdts=$(comma_list $(mdts_nodes))
 
        mkdir -p $DIR/$tdir
-       $SETSTRIPE -i 0 -c 1 $DIR/$tdir
+       $LFS setstripe -i 0 -c 1 $DIR/$tdir
        createmany -o $DIR/$tdir/$tfile. 1000
 
        # statfs data is not real time, let's just calculate it
        old_iused=$((old_iused + 1000))
 
-       local count=$(do_facet $SINGLEMDS "lctl get_param -n \
+       local count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
                        osp.*OST0000*MDT0000.create_count")
-       local max_count=$(do_facet $SINGLEMDS "lctl get_param -n \
+       local max_count=$(do_facet $SINGLEMDS "$LCTL get_param -n \
                                osp.*OST0000*MDT0000.max_create_count")
-       for idx in $(seq $MDSCOUNT); do
-               do_facet mds$idx "lctl set_param -n \
-                       osp.*OST0000*MDT000?.max_create_count=0"
-       done
+       do_nodes $mdts "$LCTL set_param -n osp.*OST0000*.max_create_count=0"
 
-       $SETSTRIPE -i 0 $DIR/$tdir/$tfile || error "setstripe failed"
-       local index=$($GETSTRIPE -i $DIR/$tdir/$tfile)
+       $LFS setstripe -i 0 $DIR/$tdir/$tfile || error "setstripe failed"
+       local index=$($LFS getstripe -i $DIR/$tdir/$tfile)
        [ $index -ne 0 ] || error "$tfile stripe index is 0"
 
        unlinkmany $DIR/$tdir/$tfile. 1000
 
-       for idx in $(seq $MDSCOUNT); do
-               do_facet mds$idx "lctl set_param -n \
-                       osp.*OST0000*MDT000?.max_create_count=$max_count"
-               do_facet mds$idx "lctl set_param -n \
-                       osp.*OST0000*MDT000?.create_count=$count"
-       done
+       do_nodes $mdts "$LCTL set_param -n \
+                       osp.*OST0000*.max_create_count=$max_count"
+       [ $MDS1_VERSION -lt $(version_code 2.12.51) ] &&
+               do_nodes $mdts "$LCTL set_param -n \
+                               osp.*OST0000*.create_count=$count"
+       do_nodes $mdts "$LCTL get_param osp.*OST0000*.create_count" |
+                       grep "=0" && error "create_count is zero"
 
        local new_iused
        for i in $(seq 120); do
@@ -18474,7 +18581,7 @@ zfs_object_blksz() {
 
 test_312() { # LU-4856
        remote_ost_nodsh && skip "remote OST with nodsh"
-       [ $(facet_fstype ost1) = "zfs" ] ||
+       [ "$ost1_FSTYPE" = "zfs" ] ||
                skip_env "the test only applies to zfs"
 
        local max_blksz=$(do_facet ost1 \
@@ -18545,7 +18652,7 @@ test_313() {
        local file=$DIR/$tfile
 
        rm -f $file
-       $SETSTRIPE -c 1 -i 0 $file || error "setstripe failed"
+       $LFS setstripe -c 1 -i 0 $file || error "setstripe failed"
 
        # define OBD_FAIL_TGT_RCVD_EIO           0x720
        do_facet ost1 "$LCTL set_param fail_loc=0x720"
@@ -18559,7 +18666,7 @@ run_test 313 "io should fail after last_rcvd update fail"
 test_314() {
        [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs"
 
-       $SETSTRIPE -c 2 -i 0 $DIR/$tfile || error "setstripe failed"
+       $LFS setstripe -c 2 -i 0 $DIR/$tfile || error "setstripe failed"
        do_facet ost1 "$LCTL set_param fail_loc=0x720"
        rm -f $DIR/$tfile
        wait_delete_completed
@@ -18600,6 +18707,8 @@ test_316() {
 run_test 316 "lfs mv"
 
 test_317() {
+       [ $MDS1_VERSION -lt $(version_code 2.11.53) ] &&
+               skip "Need MDS version at least 2.11.53"
        local trunc_sz
        local grant_blk_size
 
@@ -18680,7 +18789,7 @@ test_fake_rw() {
        local saved_debug=$($LCTL get_param -n debug)
        $LCTL set_param debug=0
 
-       $SETSTRIPE -c 1 -i 0 $DIR/$tfile
+       $LFS setstripe -c 1 -i 0 $DIR/$tfile
 
        # get ost1 size - lustre-OST0000
        local ost1_avail_size=$($LFS df | awk /${ost1_svc}/'{ print $4 }')
@@ -18733,7 +18842,7 @@ run_test 399a "fake write should not be slower than normal write"
 
 test_399b() { # LU-8726 for OST fake read
        remote_ost_nodsh && skip "remote OST with nodsh"
-       if [ "$(facet_fstype ost1)" != "ldiskfs" ]; then
+       if [ "$ost1_FSTYPE" != "ldiskfs" ]; then
                skip_env "ldiskfs only test"
        fi
 
@@ -18893,12 +19002,11 @@ test_401d() {
 run_test 401d "Verify 'lctl set_param' accepts values containing '='"
 
 test_402() {
-       local server_version=$(lustre_version_code $SINGLEMDS)
-       [[ $server_version -ge $(version_code 2.7.66) ]] ||
-       [[ $server_version -ge $(version_code 2.7.18.4) &&
-               $server_version -lt $(version_code 2.7.50) ]] ||
-       [[ $server_version -ge $(version_code 2.7.2) &&
-               $server_version -lt $(version_code 2.7.11) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.7.66) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.7.18.4) &&
+               $MDS1_VERSION -lt $(version_code 2.7.50) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.7.2) &&
+               $MDS1_VERSION -lt $(version_code 2.7.11) ]] ||
                skip "Need MDS version 2.7.2+ or 2.7.18.4+ or 2.7.66+"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
@@ -18940,8 +19048,7 @@ test_403() {
 run_test 403 "i_nlink should not drop to zero due to aliasing"
 
 test_404() { # LU-6601
-       local server_version=$(lustre_version_code $SINGLEMDS)
-       [[ $server_version -ge $(version_code 2.8.53) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.8.53) ]] ||
                skip "Need server version newer than 2.8.52"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
@@ -18971,8 +19078,9 @@ test_404() { # LU-6601
 run_test 404 "validate manual {de}activated works properly for OSPs"
 
 test_405() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.92) -o \
-       [ $(lustre_version_code client) -lt $(version_code 2.6.99) ] &&
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
+       [ $MDS1_VERSION -lt $(version_code 2.6.92) -o \
+       [ $CLIENT_VERSION -lt $(version_code 2.6.99) ] &&
                skip "Layout swap lock is not supported"
        check_swap_layouts_support
 
@@ -18987,7 +19095,7 @@ test_406() {
        [ $OSTCOUNT -lt 2 ] && skip_env "needs >= 2 OSTs"
        [ -n "$FILESET" ] && skip "SKIP due to FILESET set"
        [ $PARALLEL == "yes" ] && skip "skip parallel run"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.50) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.8.50) ] &&
                skip "Need MDS version at least 2.8.50"
 
        local def_stripe_size=$($LFS getstripe -S $MOUNT)
@@ -19057,7 +19165,7 @@ run_test 406 "DNE support fs default striping"
 
 test_407() {
        [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.55) ]] &&
+       [[ $MDS1_VERSION -lt $(version_code 2.8.55) ]] &&
                skip "Need MDS version at least 2.8.55"
        remote_mds_nodsh && skip "remote MDS with nodsh"
 
@@ -19100,8 +19208,7 @@ run_test 408 "drop_caches should not hang due to page leaks"
 
 test_409()
 {
-       [ $MDSCOUNT -lt 2 ] && skip_env "needs >= 2 MDTs"
-       check_mount_and_prep
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
 
        mkdir -p $DIR/$tdir || error "(0) Fail to mkdir"
        $LFS mkdir -i 1 -c 2 $DIR/$tdir/foo || error "(1) Fail to mkdir"
@@ -19125,12 +19232,13 @@ test_409()
        echo "Unlink hard links start at $(date)"
        unlinkmany $DIR/$tdir/foo/${PREFIX}_ 1000 ||
                error "(7) Fail to unlink"
+       echo "Unlink hard links finished at $(date)"
 }
 run_test 409 "Large amount of cross-MDTs hard links on the same file"
 
 test_410()
 {
-       [[ $(lustre_version_code client) -lt $(version_code 2.9.59) ]] &&
+       [[ $CLIENT_VERSION -lt $(version_code 2.9.59) ]] &&
                skip "Need client version at least 2.9.59"
 
        # Create a file, and stat it from the kernel
@@ -19260,7 +19368,7 @@ test_415() {
 
        total=500
        # this test may be slow on ZFS
-       [ "$(facet_fstype mds1)" == "zfs" ] && total=100
+       [ "$mds1_FSTYPE" == "zfs" ] && total=100
 
        # though this test is designed for striped directory, let's test normal
        # directory too since lock is always saved as CoS lock.
@@ -19313,9 +19421,9 @@ cleanup_417() {
 }
 
 test_417() {
-       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
-       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ]] &&
-               skip "Need MDS version at least 2.11.56" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+       [[ $MDS1_VERSION -lt $(version_code 2.11.56) ]] &&
+               skip "Need MDS version at least 2.11.56"
 
        trap cleanup_417 RETURN EXIT
 
@@ -19338,9 +19446,95 @@ test_417() {
 }
 run_test 417 "disable remote dir, striped dir and dir migration"
 
+# Checks that the outputs of df [-i] and lfs df [-i] match
+#
+# usage: check_lfs_df <blocks | inodes> <mountpoint>
+check_lfs_df() {
+       local dir=$2
+       local inodes
+       local df_out
+       local lfs_df_out
+       local tries=100
+       local count=0
+       local passed=false
+
+       # blocks or inodes
+       [ "$1" == "blocks" ] && inodes= || inodes="-i"
+
+       while (( count < tries )); do
+               cancel_lru_locks
+               sync; sleep 0.2
+
+               # read the lines of interest
+               df_out=($(df $inodes $dir | tail -n +2)) ||
+                       error "df $inodes $dir | tail -n +2 failed"
+               lfs_df_out=($($LFS df $inodes $dir | grep summary:)) ||
+                       error "lfs df $inodes $dir | grep summary: failed"
+
+               # skip first substrings of each output as they are different
+               # <NID>:/<fsname for df, filesystem_summary: for lfs df
+               df_out=(${df_out[@]:1})
+               lfs_df_out=(${lfs_df_out[@]:1})
+
+               # compare the two outputs
+               passed=true
+
+               for i in {0..4}; do
+                       [ "${df_out[i]}" != "${lfs_df_out[i]}" ] && passed=false
+               done
+               $passed && break
+       done
+
+       $passed || error "df and lfs df $1 output mismatch: "   \
+                        "df ${inodes}: ${df_out[*]}, "         \
+                        "lfs df ${inodes}: ${lfs_df_out[*]}"
+}
+
+test_418() {
+       [ $PARALLEL == "yes" ] && skip "skip parallel run"
+
+       local dir=$DIR/$tdir
+       local numfiles=$((RANDOM % 4096 + 2))
+       local numblocks=$((RANDOM % 256 + 1))
+
+       wait_delete_completed
+       test_mkdir $dir
+
+       # check block output
+       check_lfs_df blocks $dir
+       # check inode output
+       check_lfs_df inodes $dir
+
+       # create a single file and retest
+       echo "Creating a single file and testing"
+       createmany -o $dir/$tfile- 1 &>/dev/null ||
+               error "creating 1 file in $dir failed"
+       check_lfs_df blocks $dir
+       check_lfs_df inodes $dir
+
+       # create a random number of files
+       echo "Creating $((numfiles - 1)) files and testing"
+       createmany -o $dir/$tfile- 1 $((numfiles - 1)) &>/dev/null ||
+               error "creating $((numfiles - 1)) files in $dir failed"
+
+       # write a random number of blocks to the first test file
+       echo "Writing $numblocks 4K blocks and testing"
+       dd if=/dev/urandom of=$dir/${tfile}-0 bs=4K conv=fsync \
+               count=$numblocks &>/dev/null ||
+               error "dd to $dir/${tfile}-0 failed"
+
+       # retest
+       check_lfs_df blocks $dir
+       check_lfs_df inodes $dir
+
+       unlinkmany $dir/$tfile- $numfiles &>/dev/null ||
+               error "unlinking $numfiles files in $dir failed"
+}
+run_test 418 "df and lfs df outputs match"
+
 prep_801() {
        [[ $(lustre_version_code mds1) -lt $(version_code 2.9.55) ]] ||
-       [[ $(lustre_version_code ost1) -lt $(version_code 2.9.55) ]] &&
+       [[ $OST1_VERSION -lt $(version_code 2.9.55) ]] &&
                skip "Need server version at least 2.9.55"
 
        start_full_debug_logging
@@ -19351,7 +19545,7 @@ post_801() {
 }
 
 barrier_stat() {
-       if [ $(lustre_version_code mgs) -le $(version_code 2.10.0) ]; then
+       if [ $MGS_VERSION -le $(version_code 2.10.0) ]; then
                local st=$(do_facet mgs $LCTL barrier_stat $FSNAME |
                           awk '/The barrier for/ { print $7 }')
                echo $st
@@ -19364,7 +19558,7 @@ barrier_stat() {
 barrier_expired() {
        local expired
 
-       if [ $(lustre_version_code mgs) -le $(version_code 2.10.0) ]; then
+       if [ $MGS_VERSION -le $(version_code 2.10.0) ]; then
                expired=$(do_facet mgs $LCTL barrier_stat $FSNAME |
                          awk '/will be expired/ { print $7 }')
        else
@@ -19553,7 +19747,7 @@ saved_MGS_MOUNT_OPTS=$MGS_MOUNT_OPTS
 saved_MDS_MOUNT_OPTS=$MDS_MOUNT_OPTS
 saved_OST_MOUNT_OPTS=$OST_MOUNT_OPTS
 
-cleanup_802() {
+cleanup_802a() {
        trap 0
 
        stopall
@@ -19563,10 +19757,10 @@ cleanup_802() {
        setupall
 }
 
-test_802() {
+test_802a() {
 
        [[ $(lustre_version_code mds1) -lt $(version_code 2.9.55) ]] ||
-       [[ $(lustre_version_code ost1) -lt $(version_code 2.9.55) ]] &&
+       [[ $OST1_VERSION -lt $(version_code 2.9.55) ]] &&
                skip "Need server version at least 2.9.55"
 
        [[ $ENABLE_QUOTA ]] && skip "Quota enabled for read-only test"
@@ -19576,7 +19770,7 @@ test_802() {
        cp $LUSTRE/tests/test-framework.sh $DIR/$tdir/ ||
                error "(2) Fail to copy"
 
-       trap cleanup_802 EXIT
+       trap cleanup_802a EXIT
 
        # sync by force before remount as readonly
        sync; sync_all_data; sleep 3; sync_all_data
@@ -19605,13 +19799,44 @@ test_802() {
        diff $LUSTRE/tests/test-framework.sh $DIR/$tdir/test-framework.sh ||
                error "(7) Read should succeed under ro mode"
 
-       cleanup_802
+       cleanup_802a
+}
+run_test 802a "simulate readonly device"
+
+test_802b() {
+       [ $PARALLEL == "yes" ] && skip "skip parallel run"
+        remote_mds_nodsh && skip "remote MDS with nodsh"
+
+       do_facet $SINGLEMDS $LCTL get_param mdt.*.readonly ||
+               skip "readonly option not available"
+
+       $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "(1) fail to mkdir"
+
+       cp $LUSTRE/tests/test-framework.sh $DIR/$tdir/ ||
+               error "(2) Fail to copy"
+
+       # write back all cached data before setting MDT to readonly
+       cancel_lru_locks
+       sync_all_data
+
+       do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=1
+       stack_trap "do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=0" EXIT
+
+       echo "Modify should be refused"
+       touch $DIR/$tdir/guard && error "(6) Touch should fail under ro mode"
+
+       echo "Read should be allowed"
+       diff $LUSTRE/tests/test-framework.sh $DIR/$tdir/test-framework.sh ||
+               error "(7) Read should succeed under ro mode"
+
+       # disable readonly
+       do_facet $SINGLEMDS $LCTL set_param mdt.*.readonly=0
 }
-run_test 802 "simulate readonly device"
+run_test 802b "be able to set MDTs to readonly"
 
 test_803() {
        [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.54) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.54) ] &&
                skip "MDS needs to be newer than 2.10.54"
 
        mkdir -p $DIR/$tdir
@@ -19623,11 +19848,12 @@ test_803() {
        done
 
        sync; sleep 3
+       wait_delete_completed # ensure old test cleanups are finished
        echo "before create:"
        $LFS df -i $MOUNT
        local before_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       for ((i=0; i<10; i++)); do
+       for i in {1..10}; do
                $LFS mkdir -c 1 -i 1 $DIR/$tdir/foo$i ||
                        error "Fail to create $DIR/$tdir/foo$i"
        done
@@ -19637,10 +19863,11 @@ test_803() {
        $LFS df -i $MOUNT
        local after_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       [ $after_used -ge $((before_used + 10)) ] ||
+       # allow for an llog to be cleaned up during the test
+       [ $after_used -ge $((before_used + 10 - 1)) ] ||
                error "before ($before_used) + 10 > after ($after_used)"
 
-       for ((i=0; i<10; i++)); do
+       for i in {1..10}; do
                rm -rf $DIR/$tdir/foo$i ||
                        error "Fail to remove $DIR/$tdir/foo$i"
        done
@@ -19649,20 +19876,19 @@ test_803() {
        wait_delete_completed
        echo "after unlink:"
        $LFS df -i $MOUNT
-       before_used=$after_used
        after_used=$($LFS df -i | grep MDT0000_UUID | awk '{print $3}')
 
-       [ $after_used -le $((before_used - 8)) ] ||
-               error "before ($before_used) - 8 < after ($after_used)"
+       # allow for an llog to be created during the test
+       [ $after_used -le $((before_used + 1)) ] ||
+               error "after ($after_used) > before ($before_used) + 1"
 }
 run_test 803 "verify agent object for remote object"
 
 test_804() {
        [[ $MDSCOUNT -lt 2 ]] && skip_env "needs >= 2 MDTs"
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.10.54) ] &&
+       [ $MDS1_VERSION -lt $(version_code 2.10.54) ] &&
                skip "MDS needs to be newer than 2.10.54"
-       [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
-               skip_env "ldiskfs only test"
+       [ "$mds1_FSTYPE" != "ldiskfs" ] && skip_env "ldiskfs only test"
 
        mkdir -p $DIR/$tdir
        $LFS mkdir -c 1 -i 1 $DIR/$tdir/dir0 ||
@@ -19748,11 +19974,10 @@ cleanup_805() {
 
 test_805() {
        local zfs_version=$(do_node $SINGLEMDS cat /sys/module/zfs/version)
-       [ "$(facet_fstype mds1)" != "zfs" ] &&
-               skip "ZFS specific test"
+       [ "$mds1_FSTYPE" != "zfs" ] && skip "ZFS specific test"
        [ $(version_code $zfs_version) -lt $(version_code 0.7.2) ] &&
                skip "netfree not implemented before 0.7"
-       [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.57) ]] ||
+       [[ $MDS1_VERSION -ge $(version_code 2.10.57) ]] ||
                skip "Need MDS version at least 2.10.57"
 
        local fsset
@@ -19812,8 +20037,8 @@ check_lsom_size()
 }
 
 test_806() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
-               skip "Need MDS version at least 2.11.52" && return
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
+               skip "Need MDS version at least 2.11.52"
 
        local bs=1048576
 
@@ -19822,7 +20047,7 @@ test_806() {
        local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
        save_lustre_params client "llite.*.xattr_cache" > $save
        lctl set_param llite.*.xattr_cache=0
-       stack_trap "restore_lustre_params < $save" EXIT
+       stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
 
        # single-threaded write
        echo "Test SOM for single-threaded write"
@@ -19835,7 +20060,7 @@ test_806() {
        local offset=0
        local i
 
-       echo "Test SOM for single client muti-threaded($num) write"
+       echo "Test SOM for single client multi-threaded($num) write"
        $TRUNCATE $DIR/$tfile 0
        for ((i = 0; i < $num; i++)); do
                $MULTIOP $DIR/$tfile Oz${offset}w${bs}c &
@@ -19864,7 +20089,7 @@ test_806() {
        offset=0
        i=0
 
-       echo "Test SOM for muti-client ($num) writes"
+       echo "Test SOM for multi-client ($num) writes"
        $TRUNCATE $DIR/$tfile 0
        for client in ${CLIENTS//,/ }; do
                do_node $client $MULTIOP $DIR/$tfile Oz${offset}w${bs}c &
@@ -19907,8 +20132,9 @@ test_806() {
 run_test 806 "Verify Lazy Size on MDS"
 
 test_807() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.52) ] &&
-               skip "Need MDS version at least 2.11.52" && return
+       [ -n "$FILESET" ] && skip "Not functional for FILESET set"
+       [ $MDS1_VERSION -lt $(version_code 2.11.52) ] &&
+               skip "Need MDS version at least 2.11.52"
 
        # Registration step
        changelog_register || error "changelog_register failed"
@@ -19919,7 +20145,7 @@ test_807() {
        local save="$TMP/$TESTSUITE-$TESTNAME.parameters"
        save_lustre_params client "llite.*.xattr_cache" > $save
        lctl set_param llite.*.xattr_cache=0
-       stack_trap "restore_lustre_params < $save" EXIT
+       stack_trap "restore_lustre_params < $save; rm -f $save" EXIT
 
        rm -rf $DIR/$tdir || error "rm $tdir failed"
        mkdir -p $DIR/$tdir || error "mkdir $tdir failed"
@@ -19937,7 +20163,7 @@ test_807() {
        local offset=0
        local i=0
 
-       echo "Test SOM for muti-client ($num) writes"
+       echo "Test SOM for multi-client ($num) writes"
        touch $DIR/$tfile || error "touch $tfile failed"
        $TRUNCATE $DIR/$tfile 0
        for client in ${CLIENTS//,/ }; do
@@ -19970,8 +20196,8 @@ check_som_nologged()
 }
 
 test_808() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ] &&
-               skip "Need MDS version at least 2.11.55" && return
+       [ $MDS1_VERSION -lt $(version_code 2.11.55) ] &&
+               skip "Need MDS version at least 2.11.55"
 
        # Registration step
        changelog_register || error "changelog_register failed"
@@ -20001,8 +20227,8 @@ check_som_nodata()
 }
 
 test_809() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
-               skip "Need MDS version at least 2.11.56" && return
+       [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56"
 
        $LFS setstripe -E 1M -L mdt $DIR/$tfile ||
                error "failed to create DoM-only file $DIR/$tfile"
@@ -20021,6 +20247,41 @@ test_809() {
 }
 run_test 809 "Verify no SOM xattr store for DoM-only files"
 
+test_810() {
+       local ORIG
+       local CSUM
+
+       # t10 seem to dislike partial pages
+       lctl set_param osc.*.checksum_type=adler
+       lctl set_param fail_loc=0x411
+       dd if=/dev/urandom of=$DIR/$tfile bs=10240 count=2
+       ORIG=$(md5sum $DIR/$tfile)
+       lctl set_param ldlm.namespaces.*osc*.lru_size=clear
+       CSUM=$(md5sum $DIR/$tfile)
+       set_checksum_type adler
+       if [ "$ORIG" != "$CSUM" ]; then
+               error "$ORIG != $CSUM"
+       fi
+}
+run_test 810 "partial page writes on ZFS (LU-11663)"
+
+test_811() {
+       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.56) ] &&
+               skip "Need MDS version at least 2.11.56"
+
+       #define OBD_FAIL_MDS_ORPHAN_DELETE      0x165
+       do_facet mds1 $LCTL set_param fail_loc=0x165
+       $MULTIOP $DIR/$tfile Ouc || error "multiop failed"
+
+       stop mds1
+       start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
+
+       sleep 5
+       [[ $(do_facet mds1 pgrep orph_.*-MDD | wc -l) -eq 0 ]] ||
+               error "MDD orphan cleanup thread not quit"
+}
+run_test 811 "orphan name stub can be cleaned up in startup"
+
 #
 # tests that do cleanup/setup should be run at the end
 #