Whamcloud - gitweb
LU-4647 tests: properly cleanup after test failure
[fs/lustre-release.git] / lustre / tests / sanity-sec.sh
old mode 100644 (file)
new mode 100755 (executable)
index 1f5ae14..fe9a554
@@ -80,9 +80,6 @@ DIR=${DIR:-$MOUNT}
 [ `echo $MOUNT | wc -w` -gt 1 ] && \
        echo "NAME=$MOUNT mounted more than once" && sec_cleanup && exit 0
 
-[ $MDSCOUNT -gt 1 ] && \
-       echo "skip multi-MDS test" && sec_cleanup && exit 0
-
 # for GSS_SUP
 GSS_REF=$(lsmod | grep ^ptlrpc_gss | awk '{print $3}')
 if [ ! -z "$GSS_REF" -a "$GSS_REF" != "0" ]; then
@@ -99,8 +96,6 @@ MDT=$(do_facet $SINGLEMDS lctl get_param -N "mdt.\*MDT0000" |
 do_facet $SINGLEMDS "mkdir -p $CONFDIR"
 IDENTITY_FLUSH=mdt.$MDT.identity_flush
 IDENTITY_UPCALL=mdt.$MDT.identity_upcall
-MDSCAPA=mdt.$MDT.capa
-CAPA_TIMEOUT=mdt.$MDT.capa_timeout
 MDSSECLEVEL=mdt.$MDT.sec_level
 
 # for CLIENT_TYPE
@@ -321,266 +316,6 @@ test_4() {
 }
 run_test 4 "set supplementary group ==============="
 
-mds_capability_timeout() {
-        [ $# -lt 1 ] && echo "Miss mds capability timeout value" && return 1
-
-        echo "Set mds capability timeout as $1 seconds"
-       do_facet $SINGLEMDS "lctl set_param -n $CAPA_TIMEOUT=$1"
-        return 0
-}
-
-mds_sec_level_switch() {
-        [ $# -lt 1 ] && echo "Miss mds sec level switch value" && return 1
-
-        case $1 in
-                0) echo "Disable capa for all clients";;
-                1) echo "Enable capa for remote client";;
-               3) echo "Enable capa for all clients";;
-                *) echo "Invalid mds sec level switch value" && return 2;;
-        esac
-
-       do_facet $SINGLEMDS "lctl set_param -n $MDSSECLEVEL=$1"
-        return 0
-}
-
-oss_sec_level_switch() {
-        [ $# -lt 1 ] && echo "Miss oss sec level switch value" && return 1
-
-        case $1 in
-                0) echo "Disable capa for all clients";;
-                1) echo "Enable capa for remote client";;
-               3) echo "Enable capa for all clients";;
-                *) echo "Invalid oss sec level switch value" && return 2;;
-        esac
-
-       for i in `seq $OSTCOUNT`; do
-               local j=`expr $i - 1`
-               local OST="`do_facet ost$i "lctl get_param -N obdfilter.\*OST\*$j/stats 2>/dev/null | cut -d"." -f2" || true`"
-                [ -z "$OST" ] && return 3
-               do_facet ost$i "lctl set_param -n obdfilter.$OST.sec_level=$1"
-       done
-        return 0
-}
-
-mds_capability_switch() {
-        [ $# -lt 1 ] && echo "Miss mds capability switch value" && return 1
-
-        case $1 in
-                0) echo "Turn off mds capability";;
-                3) echo "Turn on mds capability";;
-                *) echo "Invalid mds capability switch value" && return 2;;
-        esac
-
-       do_facet $SINGLEMDS "lctl set_param -n $MDSCAPA=$1"
-        return 0
-}
-
-oss_capability_switch() {
-        [ $# -lt 1 ] && echo "Miss oss capability switch value" && return 1
-
-        case $1 in
-                0) echo "Turn off oss capability";;
-                1) echo "Turn on oss capability";;
-                *) echo "Invalid oss capability switch value" && return 2;;
-        esac
-
-       for i in `seq $OSTCOUNT`; do
-               local j=`expr $i - 1`
-               local OST="`do_facet ost$i "lctl get_param -N obdfilter.\*OST\*$j/stats 2>/dev/null | cut -d"." -f2" || true`"
-                [ -z "$OST" ] && return 3
-               do_facet ost$i "lctl set_param -n obdfilter.$OST.capa=$1"
-       done
-        return 0
-}
-
-turn_mds_capa_on() {
-        mds_capability_switch 3 || return 1
-       mds_sec_level_switch 3  || return 2
-        return 0
-}
-
-turn_oss_capa_on() {
-        oss_capability_switch 1 || return 1
-       oss_sec_level_switch 3  || return 2
-        return 0
-}
-
-turn_capability_on() {
-        local capa_timeout=${1:-"1800"}
-
-        # To turn on fid capability for the system,
-        # there is a requirement that fid capability
-        # is turned on on all MDS/OSS servers before
-        # client mount.
-
-       turn_mds_capa_on || return 1
-       turn_oss_capa_on || return 2
-        mds_capability_timeout $capa_timeout || return 3
-        remount_client $MOUNT || return 4
-        return 0
-}
-
-turn_mds_capa_off() {
-       mds_sec_level_switch 0  || return 1
-        mds_capability_switch 0 || return 2
-        return 0
-}
-
-turn_oss_capa_off() {
-       oss_sec_level_switch 0  || return 1
-        oss_capability_switch 0 || return 2
-        return 0
-}
-
-turn_capability_off() {
-        # to turn off fid capability, you can just do
-        # it in a live system. But, please turn off
-        # capability of all OSS servers before MDS servers.
-
-       turn_oss_capa_off || return 1
-       turn_mds_capa_off || return 2
-        return 0
-}
-
-# We demonstrate that access to the objects in the filesystem are not
-# accessible without supplying secrets from the MDS by disabling a
-# proc variable on the mds so that it does not supply secrets. We then
-# try and access objects which result in failure.
-test_5() {
-        local file=$DIR/f5
-
-       [ $GSS_SUP = 0 ] && skip "without GSS support." && return
-       if ! remote_mds; then
-                skip "client should be separated from server."
-                return
-        fi
-
-       rm -f $file
-
-       turn_capability_off
-       if [ $? != 0 ]; then
-               error "turn_capability_off"
-               return 1
-       fi
-
-        turn_oss_capa_on
-       if [ $? != 0 ]; then
-               error "turn_oss_capa_on"
-               return 2
-       fi
-
-       if [ "$CLIENT_TYPE" = "remote" ]; then
-               remount_client $MOUNT && return 3
-               turn_oss_capa_off
-               return 0
-       else
-               remount_client $MOUNT || return 4
-       fi
-
-        # proc variable disabled -- access to the objects in the filesystem
-        # is not allowed
-        echo "Should get Write error here : (proc variable are disabled "\
-            "-- access to the objects in the filesystem is denied."
-       $WTL $file 30
-       if [ $? == 0 ]; then
-               error "Write worked well even though secrets not supplied."
-               return 5
-        fi
-
-        turn_capability_on
-       if [ $? != 0 ]; then
-               error "turn_capability_on"
-               return 6
-       fi
-
-        sleep 5
-
-        # proc variable enabled, secrets supplied -- write should work now
-        echo "Should not fail here : (proc variable enabled, secrets supplied "\
-            "-- write should work now)."
-       $WTL $file 30
-       if [ $? != 0 ]; then
-               error "Write failed even though secrets supplied."
-               return 7
-        fi
-
-       turn_capability_off
-       if [ $? != 0 ]; then
-               error "turn_capability_off"
-               return 8
-       fi
-       rm -f $file
-}
-run_test 5 "capa secrets ========================="
-
-# Expiry: A test program is performing I/O on a file. It has credential
-# with an expiry half a minute later. While the program is running the
-# credentials expire and no automatic extensions or renewals are
-# enabled. The program will demonstrate an I/O failure.
-test_6() {
-        local file=$DIR/f6
-
-       [ $GSS_SUP = 0 ] && skip "without GSS support." && return
-       if ! remote_mds; then
-                skip "client should be separated from server."
-                return
-        fi
-
-       turn_capability_off
-       if [ $? != 0 ]; then
-               error "turn_capability_off"
-               return 1
-       fi
-
-       rm -f $file
-
-        turn_capability_on 30
-       if [ $? != 0 ]; then
-               error "turn_capability_on 30"
-               return 2
-       fi
-
-        # Token expiry
-       $WTL $file 60
-       if [ $? != 0 ]; then
-               error "$WTL $file 60"
-               return 3
-       fi
-
-       # Reset MDS capability timeout
-       mds_capability_timeout 30
-       if [ $? != 0 ]; then
-               error "mds_capability_timeout 30"
-               return 4
-       fi
-
-       $WTL $file 60 &
-       local PID=$!
-       sleep 5
-
-        # To disable automatic renew, only need turn capa off on MDS.
-       turn_mds_capa_off
-       if [ $? != 0 ]; then
-               error "turn_mds_capa_off"
-               return 5
-       fi
-
-       echo "We expect I/O failure."
-        wait $PID
-       if [ $? == 0 ]; then
-               echo "no I/O failure got."
-               return 6
-       fi
-
-       turn_capability_off
-       if [ $? != 0 ]; then
-               error "turn_capability_off"
-               return 7
-       fi
-       rm -f $file
-}
-run_test 6 "capa expiry ========================="
-
 create_nodemaps() {
        local i
        local out
@@ -893,8 +628,8 @@ test_7() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        create_nodemaps
@@ -913,8 +648,8 @@ test_8() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        # Set up nodemaps
@@ -944,8 +679,8 @@ test_9() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -982,8 +717,8 @@ test_10() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1029,8 +764,8 @@ test_11() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1059,8 +794,8 @@ test_12() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1097,8 +832,8 @@ test_13() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1140,8 +875,8 @@ test_14() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1175,8 +910,8 @@ test_15() {
        local rc
 
        remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
                return
 
        rc=0
@@ -1216,6 +951,18 @@ test_15() {
 }
 run_test 15 "test id mapping"
 
+# Until nodemaps are distributed by MGS, they need to be distributed manually
+# This function and all calls to it should be removed once the MGS distributes
+# nodemaps to the MDS and OSS nodes directly.
+do_servers_not_mgs() {
+       local mgs_ip=$(host_nids_address $mgs_HOST $NETTYPE)
+       for node in $(all_server_nodes); do
+               local node_ip=$(host_nids_address $node $NETTYPE)
+               [ $node_ip == $mgs_ip ] && continue
+               do_node $node_ip $*
+       done
+}
+
 create_fops_nodemaps() {
        local i=0
        local client
@@ -1225,19 +972,20 @@ create_fops_nodemaps() {
                do_facet mgs $LCTL nodemap_add c${i} || return 1
                do_facet mgs $LCTL nodemap_add_range    \
                        --name c${i} --range $client_nid || return 1
-               do_facet ost0 $LCTL set_param nodemap.add_nodemap=c${i} ||
+               do_servers_not_mgs $LCTL set_param nodemap.add_nodemap=c${i} ||
+                       return 1
+               do_servers_not_mgs "$LCTL set_param \
+                       nodemap.add_nodemap_range='c${i} $client_nid'" ||
                        return 1
-               do_facet ost0 "$LCTL set_param nodemap.add_nodemap_range='c$i \
-                       $client_nid'" || return 1
                for map in ${FOPS_IDMAPS[i]}; do
                        do_facet mgs $LCTL nodemap_add_idmap --name c${i} \
                                --idtype uid --idmap ${map} || return 1
-                       do_facet ost0 "$LCTL set_param \
+                       do_servers_not_mgs "$LCTL set_param \
                                nodemap.add_nodemap_idmap='c$i uid ${map}'" ||
                                return 1
                        do_facet mgs $LCTL nodemap_add_idmap --name c${i} \
                                --idtype gid --idmap ${map} || return 1
-                       do_facet ost0 "$LCTL set_param \
+                       do_servers_not_mgs "$LCTL set_param \
                                nodemap.add_nodemap_idmap='c$i gid ${map}'" ||
                                return 1
                done
@@ -1254,13 +1002,26 @@ delete_fops_nodemaps() {
        local client
        for client in $clients; do
                do_facet mgs $LCTL nodemap_del c${i} || return 1
-               do_facet ost0 $LCTL set_param nodemap.remove_nodemap=c${i} ||
+               do_servers_not_mgs $LCTL set_param nodemap.remove_nodemap=c$i ||
                        return 1
                i=$((i + 1))
        done
        return 0
 }
 
+fops_mds_index=0
+nm_test_mkdir() {
+       if [ $MDSCOUNT -le 1 ]; then
+               do_node ${clients_arr[0]} mkdir -p $DIR/$tdir
+       else
+               # round-robin MDTs to test DNE nodemap support
+               [ ! -d $DIR ] && do_node ${clients_arr[0]} mkdir -p $DIR
+               do_node ${clients_arr[0]} $LFS setdirstripe -c 1 -i \
+                       $((fops_mds_index % MDSCOUNT)) $DIR/$tdir
+               ((fops_mds_index++))
+       fi
+}
+
 # acl test directory needs to be initialized on a privileged client
 fops_test_setup() {
        local admin=$(do_facet mgs $LCTL get_param -n nodemap.c0.admin_nodemap)
@@ -1269,19 +1030,19 @@ fops_test_setup() {
 
        do_facet mgs $LCTL nodemap_modify --name c0 --property admin --value 1
        do_facet mgs $LCTL nodemap_modify --name c0 --property trusted --value 1
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=1
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=1
 
        do_node ${clients_arr[0]} rm -rf $DIR/$tdir
-       do_node ${clients_arr[0]} mkdir -p $DIR/$tdir
+       nm_test_mkdir
        do_node ${clients_arr[0]} chown $user $DIR/$tdir
 
        do_facet mgs $LCTL nodemap_modify --name c0 \
                --property admin --value $admin
        do_facet mgs $LCTL nodemap_modify --name c0 \
                --property trusted --value $trust
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=$admin
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=$trust
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=$admin
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=$trust
 
        # flush MDT locks to make sure they are reacquired before test
        do_node ${clients_arr[0]} lctl set_param \
@@ -1314,28 +1075,29 @@ nodemap_check_quota() {
 
 do_fops_quota_test() {
        local run_u=$1
-       # define fuzz as 2x ost block size in K
-       local quota_fuzz=$(($(lctl get_param -n \
-               osc.$FSNAME-OST0000-*.blocksize | head -1) / 512))
+       # fuzz quota used to account for possible indirect blocks, etc
+       local quota_fuzz=$(fs_log_size)
        local qused_orig=$(nodemap_check_quota "$run_u")
-       local qused_low=$((qused_orig - quota_fuzz))
        local qused_high=$((qused_orig + quota_fuzz))
+       local qused_low=$((qused_orig - quota_fuzz))
        local testfile=$DIR/$tdir/$tfile
        chmod 777 $DIR/$tdir
        $run_u dd if=/dev/zero of=$testfile bs=1M count=1 >& /dev/null
        sync; sync_all_data || true
 
        local qused_new=$(nodemap_check_quota "$run_u")
-       [ $((qused_low + 1024)) -le $((qused_new)) \
-               -a $((qused_high + 1024)) -ge $((qused_new)) ] ||
-               error "$qused_new != $qused_orig + 1M after write"
+       [ $((qused_new)) -lt $((qused_low + 1024)) \
+               -o $((qused_new)) -gt $((qused_high + 1024)) ] &&
+               error "$qused_new != $qused_orig + 1M after write, \
+                     fuzz is $quota_fuzz"
        $run_u rm $testfile && d=1
        $NODEMAP_TEST_QUOTA && wait_delete_completed_mds
 
        qused_new=$(nodemap_check_quota "$run_u")
-       [ $((qused_low)) -le $((qused_new)) \
-               -a $((qused_high)) -ge $((qused_new)) ] ||
-               error "quota not reclaimed, expect $qused_orig got $qused_new"
+       [ $((qused_new)) -lt $((qused_low)) \
+               -o $((qused_new)) -gt $((qused_high)) ] &&
+               error "quota not reclaimed, expect $qused_orig got $qused_new, \
+                     fuzz $quota_fuzz"
 }
 
 get_fops_mapped_user() {
@@ -1417,7 +1179,10 @@ test_fops() {
        local mds_i
        local rc=0
        local perm_bit_list="0 3 $((0300)) $((0303))"
-       [ "$SLOW" == "yes" ] && perm_bit_list=$(seq 0 511)
+       # SLOW tests 000-007, 010-070, 100-700 (octal modes)
+       [ "$SLOW" == "yes" ] &&
+               perm_bit_list="0 $(seq 1 7) $(seq 8 8 63) $(seq 64 64 511) \
+                              $((0303))"
 
        # step through mds users. -1 means root
        for mds_i in -1 0 1 2; do
@@ -1439,18 +1204,23 @@ test_fops() {
                                             $RUNAS_CMD -u$u -g$u -G$u"
                                for perm_bits in $perm_bit_list; do
                                        local mode=$(printf %03o $perm_bits)
+                                       local key
+                                       key="$mapmode:$user:c$cli_i:$u:$mode"
                                        do_facet mgs $LCTL nodemap_modify \
                                                --name c$cli_i \
                                                --property admin \
                                                --value 1
-                                       do_node $client chmod $mode $DIR/$tdir
+                                       do_servers_not_mgs $LCTL set_param \
+                                               nodemap.c$cli_i.admin_nodemap=1
+                                       do_node $client chmod $mode $DIR/$tdir \
+                                               || error unable to chmod $key
                                        do_facet mgs $LCTL nodemap_modify \
                                                --name c$cli_i \
                                                --property admin \
                                                --value $admin
+                                       do_servers_not_mgs $LCTL set_param \
+                                           nodemap.c$cli_i.admin_nodemap=$admin
 
-                                       local key
-                                       key="$mapmode:$user:c$cli_i:$u:$mode"
                                        do_create_delete "$run_u" "$key"
                                done
 
@@ -1466,16 +1236,20 @@ test_fops() {
        return $rc
 }
 
+nodemap_version_check () {
+       remote_mgs_nodsh && skip "remote MGS with nodsh" && return 1
+       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
+               return 1
+       return 0
+}
+
 nodemap_test_setup() {
        local rc
        local active_nodemap=$1
 
-       do_facet mgs $LCTL set_param $IDENTITY_UPCALL=NONE
-
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code $SINGLEMGS) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(get_lustre_version) MGS, need 2.5.53+" &&
-               return
+       do_nodes $(comma_list $(all_mdts_nodes)) $LCTL set_param \
+               mdt.*.identity_upcall=NONE
 
        rc=0
        create_fops_nodemaps
@@ -1484,21 +1258,22 @@ nodemap_test_setup() {
 
        if [ "$active_nodemap" == "0" ]; then
                do_facet mgs $LCTL set_param nodemap.active=0
-               do_facet ost0 $LCTL set_param nodemap.active=0
+               do_servers_not_mgs $LCTL set_param nodemap.active=0
                return
        fi
 
        do_facet mgs $LCTL nodemap_activate 1
-       do_facet ost0 $LCTL set_param nodemap.active=1
+       do_servers_not_mgs $LCTL set_param nodemap.active=1
        do_facet mgs $LCTL nodemap_modify --name default \
                --property admin --value 1
        do_facet mgs $LCTL nodemap_modify --name default \
                --property trusted --value 1
-       do_facet ost0 $LCTL set_param nodemap.default.admin_nodemap=1
-       do_facet ost0 $LCTL set_param nodemap.default.trusted_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.default.admin_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.default.trusted_nodemap=1
 }
 
 nodemap_test_cleanup() {
+       trap 0
        delete_fops_nodemaps
        rc=$?
        [[ $rc != 0 ]] && error "removing fops nodemaps failed $rc"
@@ -1513,25 +1288,31 @@ nodemap_clients_admin_trusted() {
        for client in $clients; do
                do_facet mgs $LCTL nodemap_modify --name c0 \
                        --property admin --value $admin
-               do_facet ost0 $LCTL set_param nodemap.c${i}.admin_nodemap=$admin
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.admin_nodemap=$admin
                do_facet mgs $LCTL nodemap_modify --name c0 \
                        --property trusted --value $tr
-               do_facet ost0 $LCTL set_param nodemap.c${i}.trusted_nodemap=$tr
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.trusted_nodemap=$tr
                i=$((i + 1))
        done
 }
 
 test_16() {
+       nodemap_version_check || return 0
        nodemap_test_setup 0
 
+       trap nodemap_test_cleanup EXIT
        test_fops all_off
        nodemap_test_cleanup
 }
 run_test 16 "test nodemap all_off fileops"
 
 test_17() {
+       nodemap_version_check || return 0
        nodemap_test_setup
 
+       trap nodemap_test_cleanup EXIT
        nodemap_clients_admin_trusted 0 1
        test_fops trusted_noadmin 1
        nodemap_test_cleanup
@@ -1539,7 +1320,10 @@ test_17() {
 run_test 17 "test nodemap trusted_noadmin fileops"
 
 test_18() {
+       nodemap_version_check || return 0
        nodemap_test_setup
+
+       trap nodemap_test_cleanup EXIT
        nodemap_clients_admin_trusted 0 0
        test_fops mapped_noadmin 1
        nodemap_test_cleanup
@@ -1547,7 +1331,10 @@ test_18() {
 run_test 18 "test nodemap mapped_noadmin fileops"
 
 test_19() {
+       nodemap_version_check || return 0
        nodemap_test_setup
+
+       trap nodemap_test_cleanup EXIT
        nodemap_clients_admin_trusted 1 1
        test_fops trusted_admin 1
        nodemap_test_cleanup
@@ -1555,7 +1342,10 @@ test_19() {
 run_test 19 "test nodemap trusted_admin fileops"
 
 test_20() {
+       nodemap_version_check || return 0
        nodemap_test_setup
+
+       trap nodemap_test_cleanup EXIT
        nodemap_clients_admin_trusted 1 0
        test_fops mapped_admin 1
        nodemap_test_cleanup
@@ -1563,7 +1353,10 @@ test_20() {
 run_test 20 "test nodemap mapped_admin fileops"
 
 test_21() {
+       nodemap_version_check || return 0
        nodemap_test_setup
+
+       trap nodemap_test_cleanup EXIT
        local x=1
        local i=0
        for client in $clients; do
@@ -1571,8 +1364,10 @@ test_21() {
                        --property admin --value 0
                do_facet mgs $LCTL nodemap_modify --name c${i} \
                        --property trusted --value $x
-               do_facet ost0 $LCTL set_param nodemap.c${i}.admin_nodemap=0
-               do_facet ost0 $LCTL set_param nodemap.c${i}.trusted_nodemap=$x
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.admin_nodemap=0
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.trusted_nodemap=$x
                x=0
                i=$((i + 1))
        done
@@ -1582,7 +1377,10 @@ test_21() {
 run_test 21 "test nodemap mapped_trusted_noadmin fileops"
 
 test_22() {
+       nodemap_version_check || return 0
        nodemap_test_setup
+
+       trap nodemap_test_cleanup EXIT
        local x=1
        local i=0
        for client in $clients; do
@@ -1590,8 +1388,10 @@ test_22() {
                        --property admin --value 1
                do_facet mgs $LCTL nodemap_modify --name c${i} \
                        --property trusted --value $x
-               do_facet ost0 $LCTL set_param nodemap.c${i}.admin_nodemap=1
-               do_facet ost0 $LCTL set_param nodemap.c${i}.trusted_nodemap=$x
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.admin_nodemap=1
+               do_servers_not_mgs $LCTL set_param \
+                       nodemap.c${i}.trusted_nodemap=$x
                x=0
                i=$((i + 1))
        done
@@ -1608,19 +1408,20 @@ nodemap_acl_test_setup() {
 
        do_facet mgs $LCTL nodemap_modify --name c0 --property admin --value 1
        do_facet mgs $LCTL nodemap_modify --name c0 --property trusted --value 1
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=1
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=1
 
        do_node ${clients_arr[0]} rm -rf $DIR/$tdir
-       do_node ${clients_arr[0]} mkdir -p $DIR/$tdir
-       do_node ${clients_arr[0]} chmod a+rwx $DIR/$tdir
+       nm_test_mkdir
+       do_node ${clients_arr[0]} chmod a+rwx $DIR/$tdir ||
+               error unable to chmod a+rwx test dir $DIR/$tdir
 
        do_facet mgs $LCTL nodemap_modify --name c0 \
                --property admin --value $admin
        do_facet mgs $LCTL nodemap_modify --name c0 \
                --property trusted --value $trust
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=$admin
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=$trust
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=$admin
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=$trust
 
 }
 
@@ -1662,8 +1463,10 @@ nodemap_acl_test() {
 }
 
 test_23() {
+       nodemap_version_check || return 0
        nodemap_test_setup
 
+       trap nodemap_test_cleanup EXIT
        # 1 trusted cluster, 1 mapped cluster
        local unmapped_fs=$((IDBASE+0))
        local unmapped_c1=$((IDBASE+5))
@@ -1673,13 +1476,13 @@ test_23() {
 
        do_facet mgs $LCTL nodemap_modify --name c0 --property admin --value 1
        do_facet mgs $LCTL nodemap_modify --name c0 --property trusted --value 1
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=1
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=1
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=1
 
        do_facet mgs $LCTL nodemap_modify --name c1 --property admin --value 0
        do_facet mgs $LCTL nodemap_modify --name c1 --property trusted --value 0
-       do_facet ost0 $LCTL set_param nodemap.c1.admin_nodemap=0
-       do_facet ost0 $LCTL set_param nodemap.c1.trusted_nodemap=0
+       do_servers_not_mgs $LCTL set_param nodemap.c1.admin_nodemap=0
+       do_servers_not_mgs $LCTL set_param nodemap.c1.trusted_nodemap=0
 
        # setfacl on trusted cluster to unmapped user, verify it's not seen
        nodemap_acl_test $unmapped_fs ${clients_arr[0]} ${clients_arr[1]} ||
@@ -1700,8 +1503,8 @@ test_23() {
        # 2 mapped clusters
        do_facet mgs $LCTL nodemap_modify --name c0 --property admin --value 0
        do_facet mgs $LCTL nodemap_modify --name c0 --property trusted --value 0
-       do_facet ost0 $LCTL set_param nodemap.c0.admin_nodemap=0
-       do_facet ost0 $LCTL set_param nodemap.c0.trusted_nodemap=0
+       do_servers_not_mgs $LCTL set_param nodemap.c0.admin_nodemap=0
+       do_servers_not_mgs $LCTL set_param nodemap.c0.trusted_nodemap=0
 
        # setfacl to mapped user on c1, also mapped to c0, verify it's seen
        nodemap_acl_test $mapped_c1 ${clients_arr[1]} ${clients_arr[0]} &&