Whamcloud - gitweb
LU-13116 tests: properly clean keyring in sanity-sec test_30
[fs/lustre-release.git] / lustre / tests / sanity-sec.sh
index 5611166..1999151 100755 (executable)
@@ -7,21 +7,20 @@
 set -e
 
 ONLY=${ONLY:-"$*"}
-# bug number for skipped test:
-ALWAYS_EXCEPT="              $SANITY_SEC_EXCEPT"
-# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
-
-SRCDIR=$(dirname $0)
-export PATH=$PWD/$SRCDIR:$SRCDIR:$PWD/$SRCDIR/../utils:$PATH:/sbin
-export NAME=${NAME:-local}
 
 LUSTRE=${LUSTRE:-$(dirname $0)/..}
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
-. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
-get_lustre_env
+
 init_logging
 
+ALWAYS_EXCEPT="$SANITY_SEC_EXCEPT "
+# bug number for skipped test:
+ALWAYS_EXCEPT+=" "
+# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
+
+[ "$SLOW" = "no" ] && EXCEPT_SLOW="26"
+
 NODEMAP_TESTS=$(seq 7 26)
 
 if ! check_versions; then
@@ -29,10 +28,7 @@ if ! check_versions; then
        EXCEPT="$EXCEPT $NODEMAP_TESTS"
 fi
 
-[ "$SLOW" = "no" ] && EXCEPT_SLOW="26"
-
-[ "$ALWAYS_EXCEPT$EXCEPT$EXCEPT_SLOW" ] &&
-       echo "Skipping tests: $ALWAYS_EXCEPT $EXCEPT $EXCEPT_SLOW"
+build_test_filter
 
 RUNAS_CMD=${RUNAS_CMD:-runas}
 
@@ -99,8 +95,6 @@ IDENTITY_UPCALL=mdt.$MDT.identity_upcall
 
 SAVE_PWD=$PWD
 
-build_test_filter
-
 sec_login() {
        local user=$1
        local group=$2
@@ -201,12 +195,10 @@ run_test 1 "setuid/gid ============================="
 # as for remote client, the groups of the specified uid on MDT
 # will be obtained by upcall /sbin/l_getidentity and used.
 test_4() {
-       local server_version=$(lustre_version_code $SINGLEMDS)
-
-       [[ $server_version -ge $(version_code 2.6.93) ]] ||
-       [[ $server_version -ge $(version_code 2.5.35) &&
-          $server_version -lt $(version_code 2.5.50) ]] ||
-               { skip "Need MDS version at least 2.6.93 or 2.5.35"; return; }
+       [[ "$MDS1_VERSION" -ge $(version_code 2.6.93) ]] ||
+       [[ "$MDS1_VERSION" -ge $(version_code 2.5.35) &&
+          "$MDS1_VERSION" -lt $(version_code 2.5.50) ]] ||
+               skip "Need MDS version at least 2.6.93 or 2.5.35"
 
        rm -rf $DIR/$tdir
        mkdir -p $DIR/$tdir
@@ -227,7 +219,6 @@ run_test 4 "set supplementary group ==============="
 
 create_nodemaps() {
        local i
-       local out
        local rc
 
        squash_id default 99 0
@@ -244,9 +235,10 @@ create_nodemaps() {
                        return $rc
                fi
 
-               out=$(do_facet mgs $LCTL get_param nodemap.$csum.id)
-               ## This needs to return zero if the following statement is 1
-               [[ $(echo $out | grep -c $csum) == 0 ]] && return 1
+               wait_update_facet --verbose mgs \
+                       "$LCTL get_param nodemap.$csum.id 2>/dev/null | \
+                       grep -c $csum || true" 1 30 ||
+                   return 1
        done
        for (( i = 0; i < NODEMAP_COUNT; i++ )); do
                local csum=${HOSTNAME_CHECKSUM}_${i}
@@ -258,7 +250,6 @@ create_nodemaps() {
 
 delete_nodemaps() {
        local i
-       local out
 
        for ((i = 0; i < NODEMAP_COUNT; i++)); do
                local csum=${HOSTNAME_CHECKSUM}_${i}
@@ -268,8 +259,10 @@ delete_nodemaps() {
                        return 3
                fi
 
-               out=$(do_facet mgs $LCTL get_param nodemap.$csum.id 2>/dev/null)
-               [[ $(echo $out | grep -c $csum) != 0 ]] && return 1
+               wait_update_facet --verbose mgs \
+                       "$LCTL get_param nodemap.$csum.id 2>/dev/null | \
+                       grep -c $csum || true" 0 30 ||
+                   return 1
        done
        for (( i = 0; i < NODEMAP_COUNT; i++ )); do
                local csum=${HOSTNAME_CHECKSUM}_${i}
@@ -339,9 +332,9 @@ add_idmaps() {
 }
 
 update_idmaps() { #LU-10040
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.55) ] &&
-               skip "Need MGS >= 2.10.55" &&
-               return
+       [ "$MGS_VERSION" -lt $(version_code 2.10.55) ] &&
+               skip "Need MGS >= 2.10.55"
+
        local csum=${HOSTNAME_CHECKSUM}_0
        local old_id_client=$ID0
        local old_id_fs=$((ID0 + 1))
@@ -462,9 +455,9 @@ modify_flags() {
 }
 
 squash_id() {
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
+
        local cmd
 
        cmd[0]="$LCTL nodemap_modify --property squash_uid"
@@ -560,65 +553,6 @@ test_nid() {
        return 1
 }
 
-wait_nm_sync() {
-       local nodemap_name=$1
-       local key=$2
-       local value=$3
-       local opt=$4
-       local proc_param
-       local is_active=$(do_facet mgs $LCTL get_param -n nodemap.active)
-       local max_retries=20
-       local is_sync
-       local out1=""
-       local out2
-       local mgs_ip=$(host_nids_address $mgs_HOST $NETTYPE | cut -d' ' -f1)
-       local i
-
-       if [ "$nodemap_name" == "active" ]; then
-               proc_param="active"
-       elif [ -z "$key" ]; then
-               proc_param=${nodemap_name}
-       else
-               proc_param="${nodemap_name}.${key}"
-       fi
-       (( is_active == 0 )) && [ "$proc_param" != "active" ] && return
-
-       if [ -z "$value" ]; then
-               out1=$(do_facet mgs $LCTL get_param $opt nodemap.${proc_param})
-               echo "On MGS ${mgs_ip}, ${proc_param} = $out1"
-       else
-               out1=$value;
-       fi
-
-       # wait up to 10 seconds for other servers to sync with mgs
-       for i in $(seq 1 10); do
-               for node in $(all_server_nodes); do
-                   local node_ip=$(host_nids_address $node $NETTYPE |
-                                   cut -d' ' -f1)
-
-                   is_sync=true
-                   if [ -z "$value" ]; then
-                       [ $node_ip == $mgs_ip ] && continue
-                   fi
-
-                   out2=$(do_node $node_ip $LCTL get_param $opt \
-                                  nodemap.$proc_param 2>/dev/null)
-                   echo "On $node ${node_ip}, ${proc_param} = $out2"
-                   [ "$out1" != "$out2" ] && is_sync=false && break
-               done
-               $is_sync && break
-               sleep 1
-       done
-       if ! $is_sync; then
-               echo MGS
-               echo $out1
-               echo OTHER - IP: $node_ip
-               echo $out2
-               error "mgs and $nodemap_name ${key} mismatch, $i attempts"
-       fi
-       echo "waited $((i - 1)) seconds for sync"
-}
-
 cleanup_active() {
        # restore activation state
        do_facet mgs $LCTL nodemap_activate 0
@@ -750,18 +684,17 @@ test_idmap() {
 test_7() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        create_nodemaps
        rc=$?
-       [[ $rc != 0 ]] && error "nodemap_add failed with $rc" && return 1
+       [[ $rc != 0 ]] && error "nodemap_add failed with $rc"
 
        delete_nodemaps
        rc=$?
-       [[ $rc != 0 ]] && error "nodemap_del failed with $rc" && return 2
+       [[ $rc != 0 ]] && error "nodemap_del failed with $rc"
 
        return 0
 }
@@ -770,10 +703,9 @@ run_test 7 "nodemap create and delete"
 test_8() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        # Set up nodemaps
 
@@ -801,10 +733,9 @@ test_9() {
        local i
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -839,10 +770,9 @@ run_test 9 "nodemap range add"
 test_10a() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -884,8 +814,8 @@ test_10a() {
 run_test 10a "nodemap reject duplicate ranges"
 
 test_10b() {
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.53) ] &&
-               skip "Need MGS >= 2.10.53" && return
+       [ "$MGS_VERSION" -lt $(version_code 2.10.53) ] &&
+               skip "Need MGS >= 2.10.53"
 
        local nm1="nodemap1"
        local nm2="nodemap2"
@@ -912,8 +842,8 @@ test_10b() {
 run_test 10b "delete range from the correct nodemap"
 
 test_10c() { #LU-8912
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.57) ] &&
-               skip "Need MGS >= 2.10.57" && return
+       [ "$MGS_VERSION" -lt $(version_code 2.10.57) ] &&
+               skip "Need MGS >= 2.10.57"
 
        local nm="nodemap_lu8912"
        local nid_range="10.210.[32-47].[0-255]@o2ib3"
@@ -942,8 +872,8 @@ test_10c() { #LU-8912
 run_test 10c "verfify contiguous range support"
 
 test_10d() { #LU-8913
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.59) ] &&
-               skip "Need MGS >= 2.10.59" && return
+       [ "$MGS_VERSION" -lt $(version_code 2.10.59) ] &&
+               skip "Need MGS >= 2.10.59"
 
        local nm="nodemap_lu8913"
        local nid_range="*@o2ib3"
@@ -974,10 +904,9 @@ run_test 10d "verfify nodemap range format '*@<net>' support"
 test_11() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -1004,10 +933,9 @@ run_test 11 "nodemap modify"
 test_12() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -1042,10 +970,9 @@ run_test 12 "nodemap set squash ids"
 test_13() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -1085,10 +1012,9 @@ run_test 13 "test nids"
 test_14() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -1120,10 +1046,9 @@ run_test 14 "test default nodemap nid lookup"
 test_15() {
        local rc
 
-       remote_mgs_nodsh && skip "remote MGS with nodsh" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.5.53) ] &&
-               skip "No nodemap on $(lustre_build_version mgs) MGS < 2.5.53" &&
-               return
+       remote_mgs_nodsh && skip "remote MGS with nodsh"
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53"
 
        rc=0
        create_nodemaps
@@ -1568,8 +1493,8 @@ test_fops() {
 
 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" &&
+       [ "$MGS_VERSION" -lt $(version_code 2.5.53) ] &&
+               skip "No nodemap on $MGS_VERSION MGS < 2.5.53" &&
                return 1
        return 0
 }
@@ -1646,7 +1571,7 @@ run_test 16 "test nodemap all_off fileops"
 
 test_17() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1662,7 +1587,7 @@ run_test 17 "test nodemap trusted_noadmin fileops"
 
 test_18() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1678,7 +1603,7 @@ run_test 18 "test nodemap mapped_noadmin fileops"
 
 test_19() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1694,7 +1619,7 @@ run_test 19 "test nodemap trusted_admin fileops"
 
 test_20() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1710,7 +1635,7 @@ run_test 20 "test nodemap mapped_admin fileops"
 
 test_21() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1737,7 +1662,7 @@ run_test 21 "test nodemap mapped_trusted_noadmin fileops"
 
 test_22() {
        if $SHARED_KEY &&
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.55) ]; then
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.55) ]; then
                skip "Need MDS >= 2.11.55"
        fi
 
@@ -1881,9 +1806,9 @@ test_23a() {
 run_test 23a "test mapped regular ACLs"
 
 test_23b() { #LU-9929
-       [ $num_clients -lt 2 ] && skip "Need 2 clients at least" && return
-       [ $(lustre_version_code mgs) -lt $(version_code 2.10.53) ] &&
-               skip "Need MGS >= 2.10.53" && return
+       [ $num_clients -lt 2 ] && skip "Need 2 clients at least"
+       [ "$MGS_VERSION" -lt $(version_code 2.10.53) ] &&
+               skip "Need MGS >= 2.10.53"
 
        export SK_UNIQUE_NM=true
        nodemap_test_setup
@@ -2124,8 +2049,8 @@ nodemap_exercise_fileset() {
 }
 
 test_27a() {
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
-               skip "Need MDS >= 2.11.50" && return
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.50) ] &&
+               skip "Need MDS >= 2.11.50"
 
        for nm in "default" "c0"; do
                local subdir="subdir_${nm}"
@@ -2143,9 +2068,9 @@ test_27a() {
 run_test 27a "test fileset in various nodemaps"
 
 test_27b() { #LU-10703
-       [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.11.50) ] &&
-               skip "Need MDS >= 2.11.50" && return
-       [[ $MDSCOUNT -lt 2 ]] && skip "needs >= 2 MDTs" && return
+       [ "$MDS1_VERSION" -lt $(version_code 2.11.50) ] &&
+               skip "Need MDS >= 2.11.50"
+       [[ $MDSCOUNT -lt 2 ]] && skip "needs >= 2 MDTs"
 
        nodemap_test_setup
        trap nodemap_test_cleanup EXIT
@@ -2222,22 +2147,26 @@ test_29() {
        touch $DIR/$tdir/$tfile || error "touch"
        zconf_umount_clients ${clients_arr[0]} $MOUNT ||
                error "unable to umount clients"
-       keyctl show | awk '/lustre/ { print $1 }' |
-               xargs -IX keyctl unlink X
+       do_node ${clients_arr[0]} "keyctl show |
+               awk '/lustre/ { print \\\$1 }' | xargs -IX keyctl unlink X"
        OLD_SK_PATH=$SK_PATH
        export SK_PATH=/dev/null
        if zconf_mount_clients ${clients_arr[0]} $MOUNT; then
                export SK_PATH=$OLD_SK_PATH
-               if [ -e $DIR/$tdir/$tfile ]; then
+               do_node ${clients_arr[0]} "ls $DIR/$tdir/$tfile"
+               if [ $? -eq 0 ]; then
                        error "able to mount and read without key"
                else
                        error "able to mount without key"
                fi
        else
                export SK_PATH=$OLD_SK_PATH
-               keyctl show | awk '/lustre/ { print $1 }' |
-                       xargs -IX keyctl unlink X
+               do_node ${clients_arr[0]} "keyctl show |
+                       awk '/lustre/ { print \\\$1 }' |
+                       xargs -IX keyctl unlink X"
        fi
+       zconf_mount_clients ${clients_arr[0]} $MOUNT ||
+               error "unable to mount clients"
 }
 run_test 29 "check for missing shared key"
 
@@ -2253,28 +2182,71 @@ test_30() {
        zconf_umount_clients ${clients_arr[0]} $MOUNT ||
                error "unable to umount clients"
        # unload keys from ring
-       keyctl show | awk '/lustre/ { print $1 }' |
-               xargs -IX keyctl unlink X
-       # invalidate the key with bogus filesystem name
-       lgss_sk -w $SK_PATH/$FSNAME-bogus.key -f $FSNAME.bogus \
-               -t client -d /dev/urandom || error "lgss_sk failed (1)"
+       do_node ${clients_arr[0]} "keyctl show |
+               awk '/lustre/ { print \\\$1 }' | xargs -IX keyctl unlink X"
+       # generate key with bogus filesystem name
+       do_node ${clients_arr[0]} "lgss_sk -w $SK_PATH/$FSNAME-bogus.key \
+               -f $FSNAME.bogus -t client -d /dev/urandom" ||
+               error "lgss_sk failed (1)"
        do_facet $SINGLEMDS lfs flushctx || error "could not run flushctx"
        OLD_SK_PATH=$SK_PATH
        export SK_PATH=$SK_PATH/$FSNAME-bogus.key
        if zconf_mount_clients ${clients_arr[0]} $MOUNT; then
                SK_PATH=$OLD_SK_PATH
-               if [ -a $DIR/$tdir/$tdir.out ]; then
+               do_node ${clients_arr[0]} "ls $DIR/$tdir/$tdir.out"
+               if [ $? -eq 0 ]; then
                        error "mount and read file with invalid key"
                else
                        error "mount with invalid key"
                fi
        fi
-       SK_PATH=$OLD_SK_PATH
        zconf_umount_clients ${clients_arr[0]} $MOUNT ||
                error "unable to umount clients"
+       # unload keys from ring
+       do_node ${clients_arr[0]} "keyctl show |
+               awk '/lustre/ { print \\\$1 }' | xargs -IX keyctl unlink X"
+       rm -f $SK_PATH
+       SK_PATH=$OLD_SK_PATH
+       zconf_mount_clients ${clients_arr[0]} $MOUNT ||
+               error "unable to mount clients"
 }
 run_test 30 "check for invalid shared key"
 
+basic_ios() {
+       local flvr=$1
+
+       mkdir -p $DIR/$tdir || error "mkdir $flvr"
+       touch $DIR/$tdir/f0 || error "touch $flvr"
+       ls $DIR/$tdir || error "ls $flvr"
+       dd if=/dev/zero of=$DIR/$tdir/f0 conv=fsync bs=1M count=10 \
+               >& /dev/null || error "dd $flvr"
+       rm -f $DIR/$tdir/f0 || error "rm $flvr"
+       rmdir $DIR/$tdir || error "rmdir $flvr"
+
+       sync ; sync
+       echo 3 > /proc/sys/vm/drop_caches
+}
+
+test_30b() {
+       local save_flvr=$SK_FLAVOR
+
+       if ! $SHARED_KEY; then
+               skip "need shared key feature for this test"
+       fi
+
+       stack_trap restore_to_default_flavor EXIT
+
+       for flvr in skn ska ski skpi; do
+               # set flavor
+               SK_FLAVOR=$flvr
+               restore_to_default_flavor || error "cannot set $flvr flavor"
+               SK_FLAVOR=$save_flvr
+
+               basic_ios $flvr
+       done
+}
+run_test 30b "basic test of all different SSK flavors"
+
 cleanup_31() {
        # unmount client
        zconf_umount $HOSTNAME $MOUNT || error "unable to umount client"
@@ -2654,7 +2626,6 @@ run_test 34 "deny_unknown on default nodemap"
 log "cleanup: ======================================================"
 
 sec_unsetup() {
-       ## nodemap deactivated
        for num in $(seq $MDSCOUNT); do
                if [ "${identity_old[$num]}" = 1 ]; then
                        switch_identity $num false || identity_old[$num]=$?