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
}
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
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
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) }')
}
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
# 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
}
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
}
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
# 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"
}
}
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