Whamcloud - gitweb
LU-3660 acl: support mount option "noacl" for zfs
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 144e5e7..d2c7a48 100644 (file)
@@ -214,20 +214,19 @@ run_test 3 "mkdir; touch; rmdir; check dir ====================="
 # LU-4471 - failed rmdir on remote directories still removes directory on MDT0
 test_4() {
        local MDTIDX=1
-       local remote_dir=remote_dir
 
-       test_mkdir $DIR/$remote_dir ||
+       test_mkdir $DIR/$tdir ||
                error "Create remote directory failed"
 
-       touch $DIR/$remote_dir/$tfile ||
+       touch $DIR/$tdir/$tfile ||
                error "Create file under remote directory failed"
 
-       rmdir $DIR/$remote_dir &&
-               error "Expect error removing in-use dir $DIR/$remote_dir"
+       rmdir $DIR/$tdir &&
+               error "Expect error removing in-use dir $DIR/$tdir"
 
-       test -d $DIR/$remote_dir || error "Remote directory disappeared"
+       test -d $DIR/$tdir || error "Remote directory disappeared"
 
-       rm -rf $DIR/$remote_dir || error "remove remote dir error"
+       rm -rf $DIR/$tdir || error "remove remote dir error"
 }
 run_test 4 "mkdir; touch dir/file; rmdir; checkdir (expect error)"
 
@@ -449,14 +448,14 @@ test_17e() {
 run_test 17e "symlinks: create recursive symlink (should return error) ===="
 
 test_17f() {
-       test_mkdir -p $DIR/d17f
-       ln -s 1234567890/2234567890/3234567890/4234567890 $DIR/d17f/111
-       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890 $DIR/d17f/222
-       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890 $DIR/d17f/333
-       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890 $DIR/d17f/444
-       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890/c234567890/d234567890/f234567890 $DIR/d17f/555
-       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890/c234567890/d234567890/f234567890/aaaaaaaaaa/bbbbbbbbbb/cccccccccc/dddddddddd/eeeeeeeeee/ffffffffff/ $DIR/d17f/666
-       ls -l  $DIR/d17f
+       test_mkdir -p $DIR/$tdir
+       ln -s 1234567890/2234567890/3234567890/4234567890 $DIR/$tdir/111
+       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890 $DIR/$tdir/222
+       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890 $DIR/$tdir/333
+       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890 $DIR/$tdir/444
+       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890/c234567890/d234567890/f234567890 $DIR/$tdir/555
+       ln -s 1234567890/2234567890/3234567890/4234567890/5234567890/6234567890/7234567890/8234567890/9234567890/a234567890/b234567890/c234567890/d234567890/f234567890/aaaaaaaaaa/bbbbbbbbbb/cccccccccc/dddddddddd/eeeeeeeeee/ffffffffff/ $DIR/$tdir/666
+       ls -l  $DIR/$tdir
 }
 run_test 17f "symlinks: long and very long symlink name ========================"
 
@@ -735,7 +734,7 @@ test_17o() {
 run_test 17o "stat file with incompat LMA feature"
 
 test_18() {
-       touch $DIR/f || error "Failed to touch $DIR/f: $?"
+       touch $DIR/$tfile || error "Failed to touch $DIR/$tfile: $?"
        ls $DIR || error "Failed to ls $DIR: $?"
 }
 run_test 18 "touch .../f ; ls ... =============================="
@@ -1038,7 +1037,6 @@ test_24t() {
 run_test 24t "mkdir .../R16a/b/c; rename .../R16a/b/c .../R16a ="
 
 test_24u() { # bug12192
-       rm -rf $DIR/$tfile
        $MULTIOP $DIR/$tfile C2w$((2048 * 1024))c || error
        $CHECKSTAT -s $((2048 * 1024)) $DIR/$tfile || error "wrong file size"
 }
@@ -1103,7 +1101,7 @@ test_24w() { # bug21506
         dd if=/dev/zero bs=$SZ1 count=1 >> $DIR/$tfile || return 2
         dd if=$DIR/$tfile of=$DIR/${tfile}_left bs=1M skip=4097 || return 3
         SZ2=`ls -l $DIR/${tfile}_left | awk '{print $5}'`
-        [ "$SZ1" = "$SZ2" ] || \
+       [[ "$SZ1" -eq "$SZ2" ]] ||
                 error "Error reading at the end of the file $tfile"
 }
 run_test 24w "Reading a file larger than 4Gb"
@@ -2474,7 +2472,6 @@ test_32n() {
 run_test 32n "open d32n/symlink->tmp/symlink->lustre-root ======"
 
 test_32o() {
-       rm -fr $DIR/d32o $DIR/$tfile
        touch $DIR/$tfile
        test_mkdir -p $DIR/d32o/tmp
        TMP_DIR=$DIR/d32o/tmp
@@ -2564,9 +2561,9 @@ test_33b() {
         rm -fr $DIR/d33
         test_mkdir -p $DIR/d33
         chown $RUNAS_ID $DIR/d33
-        $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33 && error "create" || true
+        $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33
 }
-run_test 33b "test open file with malformed flags (No panic and return error)"
+run_test 33b "test open file with malformed flags (No panic)"
 
 test_33c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -4072,6 +4069,23 @@ test_51d() {
 }
 run_test 51d "check object distribution ===================="
 
+test_51e() {
+       if [ "$(facet_fstype $SINGLEMDS)" != ldiskfs ]; then
+               skip "Only applicable to ldiskfs-based MDTs"
+               return
+       fi
+
+       test_mkdir -c1 $DIR/$tdir       || error "create $tdir failed"
+       test_mkdir -c1 $DIR/$tdir/d0    || error "create d0 failed"
+
+       touch $DIR/$tdir/d0/foo
+       createmany -l $DIR/$tdir/d0/foo $DIR/$tdir/d0/f- 65001 &&
+               error "file exceed 65000 nlink limit!"
+       unlinkmany $DIR/$tdir/d0/f- 65001
+       return 0
+}
+run_test 51e "check file nlink limit"
+
 test_52a() {
        [ -f $DIR/$tdir/foo ] && chattr -a $DIR/$tdir/foo
        test_mkdir -p $DIR/$tdir
@@ -4214,31 +4228,34 @@ cleanup_54c() {
        loopdev="$DIR/loop54c"
 
        trap 0
-       $UMOUNT -d $tdir || rc=$?
+       $UMOUNT -d $DIR/$tdir || rc=$?
        losetup -d $loopdev || true
-       rm $loopdev
+       losetup -d $LOOPDEV || true
+       rm -rf $loopdev $DIR/$tfile $DIR/$tdir
        return $rc
 }
 
 test_54c() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
-       tfile="$DIR/f54c"
-       tdir="$DIR/d54c"
        loopdev="$DIR/loop54c"
 
        find_loop_dev
        [ -z "$LOOPNUM" ] && echo "couldn't find empty loop device" && return
-       mknod $loopdev b 7 $LOOPNUM
-       echo "make a loop file system with $tfile on $loopdev ($LOOPNUM)..."
-       dd if=/dev/zero of=$tfile bs=$(get_page_size client) seek=1024 count=1 > /dev/null
-       losetup $loopdev $tfile || error "can't set up $loopdev for $tfile"
        trap cleanup_54c EXIT
+       mknod $loopdev b 7 $LOOPNUM
+       echo "make a loop file system with $DIR/$tfile on $loopdev ($LOOPNUM)."
+       dd if=/dev/zero of=$DIR/$tfile bs=$(get_page_size client) seek=1024 count=1 > /dev/null
+       losetup $loopdev $DIR/$tfile ||
+               error "can't set up $loopdev for $DIR/$tfile"
        mkfs.ext2 $loopdev || error "mke2fs on $loopdev"
-       test_mkdir -p $tdir
-       mount -t ext2 $loopdev $tdir || error "error mounting $loopdev on $tdir"
-       dd if=/dev/zero of=$tdir/tmp bs=`page_size` count=30 || error "dd write"
-       df $tdir
-       dd if=$tdir/tmp of=/dev/zero bs=`page_size` count=30 || error "dd read"
+       test_mkdir -p $DIR/$tdir
+       mount -t ext2 $loopdev $DIR/$tdir ||
+               error "error mounting $loopdev on $DIR/$tdir"
+       dd if=/dev/zero of=$DIR/$tdir/tmp bs=$(get_page_size client) count=30 ||
+               error "dd write"
+       df $DIR/$tdir
+       dd if=$DIR/$tdir/tmp of=/dev/zero bs=$(get_page_size client) count=30 ||
+               error "dd read"
        cleanup_54c
 }
 run_test 54c "block device works in lustre ====================="
@@ -4893,6 +4910,30 @@ test_56y() {
 }
 run_test 56y "lfs find -L raid0|released"
 
+test_56z() { # LU-4824
+       # This checks to make sure 'lfs find' continues after errors
+       # There are two classes of errors that should be caught:
+       # - If multiple paths are provided, all should be searched even if one
+       #   errors out
+       # - If errors are encountered during the search, it should not terminate
+       #   early
+       local i
+       test_mkdir $DIR/$tdir
+       for i in d{0..9}; do
+               test_mkdir $DIR/$tdir/$i
+       done
+       touch $DIR/$tdir/d{0..9}/$tfile
+       $LFS find $DIR/non_existent_dir $DIR/$tdir &&
+               error "$LFS find did not return an error"
+       # Make a directory unsearchable. This should NOT be the last entry in
+       # directory order.  Arbitrarily pick the 6th entry
+       chmod 700 $(lfs find $DIR/$tdir -type d | sed '6!d')
+       local count=$($RUNAS $LFS find $DIR/non_existent $DIR/$tdir | wc -l)
+       # The user should be able to see 10 directories and 9 files
+       [ $count == 19 ] || error "$LFS find did not continue after error"
+}
+run_test 56z "lfs find should continue after an error"
+
 test_57a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
        # note test will not do anything if MDS is not local
@@ -5462,8 +5503,6 @@ test_72a() { # bug 5695 - Test that on 2.6 remove_suid works properly
                skip_env "User $RUNAS_ID does not exist - skipping"
                return 0
        }
-       # We had better clear the $DIR to get enough space for dd
-       rm -rf $DIR/*
        touch $DIR/$tfile
        chmod 777 $DIR/$tfile
        chmod ug+s $DIR/$tfile
@@ -6386,7 +6425,7 @@ cleanup_test102() {
 }
 
 test_102a() {
-       local testfile=$DIR/xattr_testfile
+       local testfile=$DIR/$tfile
 
        touch $testfile
 
@@ -6801,7 +6840,7 @@ run_acl_subtest()
     return $?
 }
 
-test_103 () {
+test_103a() {
        [ "$UID" != 0 ] && skip_env "must run as root" && return
        [ -z "$(lctl get_param -n mdc.*-mdc-*.connect_flags | grep acl)" ] &&
                skip "must have acl enabled" && return
@@ -6862,7 +6901,43 @@ test_103 () {
                fi
        done
 }
-run_test 103 "acl test ========================================="
+run_test 103a "acl test ========================================="
+
+test_103b() {
+        local noacl=false
+        local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
+        local mountopts=$MDS_MOUNT_OPTS
+
+        if [[ "$MDS_MOUNT_OPTS" =~ "noacl" ]]; then
+                noacl=true
+        else
+                # stop the MDT
+                stop $SINGLEMDS || error "failed to stop MDT."
+                # remount the MDT
+                if [ -z "$MDS_MOUNT_OPTS" ]; then
+                        MDS_MOUNT_OPTS="-o noacl"
+                else
+                        MDS_MOUNT_OPTS="${MDS_MOUNT_OPTS},noacl"
+                fi
+                start $SINGLEMDS $MDT_DEV $MDS_MOUNT_OPTS ||
+                        error "failed to start MDT."
+                MDS_MOUNT_OPTS=$mountopts
+        fi
+
+        touch $DIR/$tfile
+        setfacl -m u:bin:rw $DIR/$tfile && error "setfacl should fail"
+
+        if ! $noacl; then
+                # stop the MDT
+                stop $SINGLEMDS || error "failed to stop MDT."
+                # remount the MDT
+                start $SINGLEMDS $MDT_DEV $MDS_MOUNT_OPTS ||
+                        error "failed to start MDT."
+        fi
+
+        rm -f $DIR/$tfile
+}
+run_test 103b "MDS mount option \"noacl\" ======================="
 
 test_104a() {
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
@@ -9242,14 +9317,14 @@ function roc_hit_init() {
                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 |
-                       awk '$1 == "cache_access" {sum += $2}
+                       awk '$1 == "cache_access" {sum += $7}
                                END { printf("%0.0f", sum) }')
 
                cancel_lru_locks osc
                cat $file >/dev/null
 
                AFTER=$(get_osd_param $list *OST*$idx stats |
-                       awk '$1 == "cache_access" {sum += $2}
+                       awk '$1 == "cache_access" {sum += $7}
                                END { printf("%0.0f", sum) }')
 
                echo BEFORE:$BEFORE AFTER:$AFTER
@@ -9266,7 +9341,7 @@ function roc_hit_init() {
 function roc_hit() {
        local list=$(comma_list $(osts_nodes))
        echo $(get_osd_param $list '' stats |
-               awk '$1 == "cache_hit" {sum += $2}
+               awk '$1 == "cache_hit" {sum += $7}
                        END { printf("%0.0f", sum) }')
 }
 
@@ -9631,6 +9706,17 @@ test_154d() {
 }
 run_test 154d "Verify open file fid"
 
+test_154e()
+{
+       [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.50) ]] &&
+               skip "Need MDS version at least 2.6.50" && return
+
+       if ls -a $MOUNT | grep -q '^\.lustre$'; then
+               error ".lustre returned by readdir"
+       fi
+}
+run_test 154e ".lustre is not returned by readdir"
+
 test_155_small_load() {
     local temp=$TMP/$tfile
     local file=$DIR/$tfile
@@ -10059,6 +10145,12 @@ run_test 160b "Verify that very long rename doesn't crash in changelog"
 
 test_160c() {
        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) ]] ||
+               { skip "Need MDS version at least 2.5.58 or 2.5.2+"; return; }
        [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
 
        # Registration step
@@ -10295,25 +10387,30 @@ test_162() {
        test_mkdir -p -c1 $DIR/$tdir/d2/p/q/r
        # regular file
        FID=$($LFS path2fid $DIR/$tdir/d2/$tfile | tr -d '[]')
-       check_path "$tdir/d2/$tfile" $FSNAME $FID --link 0
+       check_path "$tdir/d2/$tfile" $FSNAME $FID --link 0 ||
+               error "check path $tdir/d2/$tfile failed"
 
        # softlink
        ln -s $DIR/$tdir/d2/$tfile $DIR/$tdir/d2/p/q/r/slink
        FID=$($LFS path2fid $DIR/$tdir/d2/p/q/r/slink | tr -d '[]')
-       check_path "$tdir/d2/p/q/r/slink" $FSNAME $FID --link 0
+       check_path "$tdir/d2/p/q/r/slink" $FSNAME $FID --link 0 ||
+               error "check path $tdir/d2/p/q/r/slink failed"
 
        # softlink to wrong file
        ln -s /this/is/garbage $DIR/$tdir/d2/p/q/r/slink.wrong
        FID=$($LFS path2fid $DIR/$tdir/d2/p/q/r/slink.wrong | tr -d '[]')
-       check_path "$tdir/d2/p/q/r/slink.wrong" $FSNAME $FID --link 0
+       check_path "$tdir/d2/p/q/r/slink.wrong" $FSNAME $FID --link 0 ||
+               error "check path $tdir/d2/p/q/r/slink.wrong failed"
 
        # hardlink
        ln $DIR/$tdir/d2/$tfile $DIR/$tdir/d2/p/q/r/hlink
        mv $DIR/$tdir/d2/$tfile $DIR/$tdir/d2/a/b/c/new_file
        FID=$($LFS path2fid $DIR/$tdir/d2/a/b/c/new_file | tr -d '[]')
        # fid2path dir/fsname should both work
-       check_path "$tdir/d2/a/b/c/new_file" $FSNAME $FID --link 1
-       check_path "$DIR/$tdir/d2/p/q/r/hlink" $DIR $FID --link 0
+       check_path "$tdir/d2/a/b/c/new_file" $FSNAME $FID --link 1 ||
+               error "check path $tdir/d2/a/b/c/new_file failed"
+       check_path "$DIR/$tdir/d2/p/q/r/hlink" $DIR $FID --link 0 ||
+               error "check path $DIR/$tdir/d2/p/q/r/hlink failed"
 
        # hardlink count: check that there are 2 links
        # Doesnt work with CMD yet: 17935
@@ -10322,7 +10419,8 @@ test_162() {
 
        # hardlink indexing: remove the first link
        rm $DIR/$tdir/d2/p/q/r/hlink
-       check_path "$tdir/d2/a/b/c/new_file" $FSNAME $FID --link 0
+       check_path "$tdir/d2/a/b/c/new_file" $FSNAME $FID --link 0 ||
+               error "check path $DIR/$tdir/d2/a/b/c/new_file failed"
 
        return 0
 }
@@ -10347,11 +10445,13 @@ test_162b() {
        for ((i=0;i<5;i++)); do
                FID=$($LFS path2fid $DIR/$tdir/striped_dir/f$i | tr -d '[]') ||
                        error "get fid for f$i failed"
-               check_path "$tdir/striped_dir/f$i" $FSNAME $FID --link 0
+               check_path "$tdir/striped_dir/f$i" $FSNAME $FID --link 0 ||
+                       error "check path $tdir/striped_dir/f$i failed"
 
                FID=$($LFS path2fid $DIR/$tdir/striped_dir/d$i | tr -d '[]') ||
                        error "get fid for d$i failed"
-               check_path "$tdir/striped_dir/d$i" $FSNAME $FID --link 0
+               check_path "$tdir/striped_dir/d$i" $FSNAME $FID --link 0 ||
+                       error "check path $tdir/striped_dir/d$i failed"
        done
 
        return 0
@@ -10448,7 +10548,7 @@ test_171() { # bug20592
 }
 run_test 171 "test libcfs_debug_dumplog_thread stuck in do_exit() ======"
 
-# it would be good to share it with obdfilter-survey/libecho code
+# it would be good to share it with obdfilter-survey/iokit-libecho code
 setup_obdecho_osc () {
         local rc=0
         local ost_nid=$1
@@ -12620,7 +12720,8 @@ run_test 236 "Layout swap on open unlinked file"
 # The new system calls are supported in glibc >= 2.14.
 
 test_237() {
-       echo "Test file_handle syscalls" > $DIR/$tfile
+       echo "Test file_handle syscalls" > $DIR/$tfile ||
+               error "write failed"
        check_fhandle_syscalls $DIR/$tfile ||
                error "check_fhandle_syscalls failed"
 }
@@ -12628,6 +12729,13 @@ run_test 237 "Verify name_to_handle_at/open_by_handle_at syscalls"
 
 # 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) ]] ||
+               { skip "Need MDS version at least 2.5.58 or 2.5.2+"; return; }
+
        touch $DIR/$tfile
        ln $DIR/$tfile $DIR/$tfile.lnk
        touch $DIR/$tfile.new
@@ -12643,6 +12751,39 @@ test_238() {
 }
 run_test 238 "Verify linkea consistency"
 
+test_239() {
+       local list=$(comma_list $(mdts_nodes))
+
+       mkdir -p $DIR/$tdir
+       createmany -o $DIR/$tdir/f- 5000
+       unlinkmany $DIR/$tdir/f- 5000
+       do_nodes $list "lctl set_param -n osp*.*.sync_changes 1"
+       changes=$(do_nodes $list "lctl get_param -n osc.*MDT*.sync_changes \
+                       osc.*MDT*.sync_in_flight" | calc_sum)
+       [ "$changes" -eq 0 ] || error "$changes not synced"
+}
+run_test 239 "osp_sync test"
+
+test_240() {
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+       mkdir -p $DIR/$tdir
+
+       $LFS mkdir -i 0 $DIR/$tdir/d0 ||
+               error "failed to mkdir $DIR/$tdir/d0 on MDT0"
+       $LFS mkdir -i 1 $DIR/$tdir/d0/d1 ||
+               error "failed to mkdir $DIR/$tdir/d0/d1 on MDT1"
+
+       umount_client $MOUNT || error "umount failed"
+       #define OBD_FAIL_TGT_DELAY_CONDITIONAL   0x713
+       do_facet mds2 lctl set_param fail_loc=0x713 fail_val=1
+       mount_client $MOUNT || error "failed to mount client"
+
+       echo "stat $DIR/$tdir/d0/d1, should not fail/ASSERT"
+       stat $DIR/$tdir/d0/d1 || error "fail to stat $DIR/$tdir/d0/d1"
+}
+run_test 240 "race between ldlm enqueue and the connection RPC (no ASSERT)"
+
 cleanup_test_300() {
        trap 0
        umask $SAVE_UMASK
@@ -12936,6 +13077,46 @@ test_300g() {
 }
 run_test 300g "check default striped directory for striped directory"
 
+test_300h() {
+       [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+       [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+       local stripe_count
+       local file
+
+       mkdir $DIR/$tdir
+
+       $LFS setdirstripe -i 0 -c$MDSCOUNT -t all_char $DIR/$tdir/striped_dir ||
+               error "set striped dir error"
+
+       createmany -o $DIR/$tdir/striped_dir/f- 10 ||
+               error "create files under striped dir failed"
+
+       # unfortunately, we need to umount to clear dir layout cache for now
+       # once we fully implement dir layout, we can drop this
+       umount_client $MOUNT || error "umount failed"
+       mount_client $MOUNT || error "mount failed"
+
+       #set the stripe to be unknown hash type
+       #define OBD_FAIL_UNKNOWN_LMV_STRIPE     0x1901
+       $LCTL set_param fail_loc=0x1901
+       for ((i = 0; i < 10; i++)); do
+               $CHECKSTAT -t file $DIR/$tdir/striped_dir/f-$i ||
+                       error "stat f-$i failed"
+               rm $DIR/$tdir/striped_dir/f-$i || error "unlink f-$i failed"
+       done
+
+       touch $DIR/$tdir/striped_dir/f0 &&
+               error "create under striped dir with unknown hash should fail"
+
+       $LCTL set_param fail_loc=0
+
+       umount_client $MOUNT || error "umount failed"
+       mount_client $MOUNT || error "mount failed"
+
+       return 0
+}
+run_test 300h "client handle unknown hash type striped directory"
+
 test_400a() { # LU-1606, was conf-sanity test_74
        local extra_flags=''
        local out=$TMP/$tfile