Whamcloud - gitweb
LU-11208 tests: add version check to sanity tests
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 28e7c33..e78788a 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 LU-11729
-       ALWAYS_EXCEPT+=" 45       101c     103a     317      810"
+       # 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
@@ -1496,7 +1491,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 +1504,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 +1630,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 +1950,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 +2045,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 +2086,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 +2135,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 +2181,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 +2201,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 +2231,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 +2263,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 +2297,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 +2313,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 +2450,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 +3099,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 +3114,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 +3126,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 +4000,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 +4013,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 +4027,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 +4037,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 +4229,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 +4339,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 +4492,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 +4598,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 +5385,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 +5786,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 +5811,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 +5906,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 +5971,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 +6047,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 +6067,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 +6159,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 +6239,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 +6474,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 +6491,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 +6528,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 +6542,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 +6555,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 +6566,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 +6578,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 +6590,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 +6599,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 +6613,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 +6655,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 +6678,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 +6697,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 +6713,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 +6738,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 +6753,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 +6876,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 +7171,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 +7280,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 +7323,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 +7387,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 +7439,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 +7470,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 +7488,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 +7520,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 +7639,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 +7651,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 +7732,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 +7751,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 +7778,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 +7925,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 +7971,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 +8062,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 +8075,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 +8095,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 +8108,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 +8266,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 +8331,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 +8350,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 +8376,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 +8411,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 +8430,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 +8438,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 +8471,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 +8497,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 +8558,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 +8584,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 +8604,7 @@ test_103a() {
 run_test 103a "acl test"
 
 test_103b() {
+       declare -a pids
        local U
 
        for U in {0..511}; do
@@ -8585,6 +8629,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
 }
@@ -8630,7 +8680,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 +8964,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 +8997,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 +9032,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 +9100,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 +9535,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 +9560,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 +10194,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 +10324,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 +10397,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 +10448,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 +10507,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 +10572,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 +10632,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 +10799,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 +10847,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 +10867,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 +10902,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 +11070,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 +11185,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 +11213,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 +11249,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 +11373,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 +11596,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 +11617,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 +11635,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 +11653,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 +11678,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 +11709,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 +11733,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 +11762,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 +11796,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 +11887,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 +11939,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 +12081,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 +12228,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 +12348,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 +12374,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 +12401,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 +12448,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 +12562,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 +12589,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 +12679,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 +12993,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 +13066,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 +13196,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 +13428,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 +13500,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 +13533,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 +13566,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 +13669,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 +13720,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 +13757,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 +13778,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 +13864,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 +13882,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 +13892,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 +13901,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 +13910,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 +13919,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 +13929,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 +13938,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 +13947,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 +14032,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"
@@ -14028,7 +14081,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 +14110,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 +14137,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 +14186,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 +14544,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 +14691,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 +14714,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 +14738,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 +14848,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 +14889,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 +14938,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 +14983,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 +14992,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 +15016,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 +15044,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 +15076,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 +15212,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 +15293,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 +15352,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 +15400,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 +15451,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 +15465,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 +15489,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 +15504,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 +15521,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
@@ -15520,7 +15571,7 @@ run_test 230k "file data not changed after dir migration"
 
 test_230l() {
        [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 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"
 
        $LFS mkdir -i 0 -c 1 $DIR/$tdir || error "mkdir failed"
@@ -15608,7 +15659,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
@@ -15632,7 +15683,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"
 
@@ -15644,7 +15695,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"
 
@@ -15680,7 +15731,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
@@ -15706,9 +15757,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"
@@ -15727,11 +15778,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
@@ -15750,7 +15799,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))
@@ -15758,7 +15807,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)
@@ -15919,7 +15968,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
@@ -16078,11 +16127,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"
@@ -16090,10 +16139,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"
@@ -16104,7 +16153,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
@@ -16123,8 +16172,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
 
@@ -16237,7 +16285,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
@@ -16439,7 +16487,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
 
@@ -16450,7 +16498,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"
 
@@ -16537,7 +16585,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"
 
@@ -16550,7 +16598,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
@@ -16600,7 +16648,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
@@ -16610,7 +16658,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
@@ -16650,7 +16698,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=$?
@@ -16659,7 +16707,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
@@ -16686,8 +16734,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"
 
@@ -16741,7 +16788,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
@@ -16759,6 +16806,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"
 
@@ -16800,8 +16848,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
 
@@ -16844,7 +16891,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
@@ -16959,7 +17006,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
@@ -16984,7 +17031,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
@@ -16992,7 +17039,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"
@@ -17013,7 +17060,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
@@ -17035,7 +17082,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
@@ -17076,7 +17123,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
@@ -17158,7 +17205,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
@@ -17178,7 +17225,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
@@ -17200,7 +17247,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
@@ -17238,7 +17285,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
@@ -17283,8 +17330,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
@@ -17294,7 +17341,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
@@ -17339,8 +17386,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
@@ -17350,7 +17397,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
@@ -17394,8 +17441,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
@@ -17405,7 +17452,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
@@ -17448,7 +17495,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
@@ -17462,19 +17509,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
@@ -17516,7 +17562,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
@@ -17556,7 +17602,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,
@@ -17583,7 +17629,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
@@ -17706,7 +17752,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"
@@ -17717,7 +17763,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"
@@ -17746,7 +17792,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"
@@ -17772,7 +17818,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"
@@ -17781,7 +17827,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 ||
@@ -17806,7 +17852,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"
@@ -17855,7 +17901,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
@@ -17944,7 +17990,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
@@ -17996,7 +18042,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
@@ -18027,7 +18073,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
@@ -18082,7 +18128,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
@@ -18109,9 +18155,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
 
@@ -18135,7 +18186,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
@@ -18159,7 +18210,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
@@ -18201,7 +18252,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"
 
@@ -18244,7 +18295,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
@@ -18317,6 +18368,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"
@@ -18400,40 +18476,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
@@ -18486,7 +18561,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 \
@@ -18557,7 +18632,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"
@@ -18571,7 +18646,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
@@ -18612,6 +18687,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
 
@@ -18692,7 +18769,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 }')
@@ -18745,7 +18822,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
 
@@ -18905,12 +18982,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"
 
@@ -18952,8 +19028,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"
 
@@ -18983,8 +19058,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
 
@@ -18999,7 +19075,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)
@@ -19069,7 +19145,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"
 
@@ -19142,7 +19218,7 @@ 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
@@ -19272,7 +19348,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.
@@ -19325,9 +19401,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
 
@@ -19350,9 +19426,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
@@ -19363,7 +19525,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
@@ -19376,7 +19538,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
@@ -19565,7 +19727,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
@@ -19575,10 +19737,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"
@@ -19588,7 +19750,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
@@ -19617,13 +19779,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 802 "simulate readonly device"
+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 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
@@ -19673,10 +19866,9 @@ 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 ||
@@ -19762,11 +19954,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
@@ -19826,8 +20017,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
 
@@ -19836,7 +20027,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"
@@ -19849,7 +20040,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 &
@@ -19878,7 +20069,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 &
@@ -19921,8 +20112,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"
@@ -19933,7 +20125,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"
@@ -19951,7 +20143,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
@@ -19984,8 +20176,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"
@@ -20015,8 +20207,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"
@@ -20053,6 +20245,23 @@ test_810() {
 }
 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
 #