X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fsanity.sh;h=3217c8f2e76347ccd97be799e639fca55d2ee0dc;hp=573844bdde616a585bc33141b895c1bee752d088;hb=4f53536d002c13886210b672b657795baa067144;hpb=57260ae5f1676ccb28f4a64b44f80ecb0525c725 diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 573844b..3217c8f 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -61,8 +61,8 @@ init_logging [ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 24D 27m 64b 68 71 77f 78 115 124b 230d" if [ $(facet_fstype $SINGLEMDS) = "zfs" ]; then - # bug number for skipped test: LU-1593 LU-4536 LU-5242 LU-1957 LU-2805 - ALWAYS_EXCEPT="$ALWAYS_EXCEPT 34h 65ic 78 79 80 180 184c" + # bug number for skipped test: LU-4536 LU-1957 LU-2805 + ALWAYS_EXCEPT="$ALWAYS_EXCEPT 65ic 180 184c" [ "$SLOW" = "no" ] && EXCEPT_SLOW="$EXCEPT_SLOW 51b 51ba" fi @@ -80,17 +80,6 @@ setup() { echo "done" } -check_kernel_version() { - WANT_VER=$1 - GOT_VER=$(lctl get_param -n version | awk '/kernel:/ {print $2}') - case $GOT_VER in - patchless|patchless_client) return 0;; - *) [ $GOT_VER -ge $WANT_VER ] && return 0 ;; - esac - log "test needs at least kernel version $WANT_VER, running $GOT_VER" - return 1 -} - check_swap_layouts_support() { $LCTL get_param -n llite.*.sbi_flags | grep -q layout || @@ -98,11 +87,6 @@ check_swap_layouts_support() return 1 } -if [ "$ONLY" == "cleanup" ]; then - sh llmountcleanup.sh - exit 0 -fi - check_and_setup_lustre DIR=${DIR:-$MOUNT} @@ -700,18 +684,17 @@ test_17o() { local WDIR=$DIR/${tdir}o local mdt_index - local mdtdevname local rc=0 mkdir -p $WDIR mdt_index=$($LFS getstripe -M $WDIR) mdt_index=$((mdt_index+1)) - mdtdevname=$(mdsdevname $mdt_index) touch $WDIR/$tfile - stop mds${mdt_index} - start mds${mdt_index} $mdtdevname $MDS_MOUNT_OPTS || - error "mount mds${mdt_index} failed" + + #fail mds will wait the failover finish then set + #following fail_loc to avoid interfer the recovery process. + fail mds${mdt_index} #define OBD_FAIL_OSD_LMA_INCOMPAT 0x194 do_facet mds${mdt_index} lctl set_param fail_loc=0x194 @@ -955,7 +938,6 @@ test_24n() { run_test 24n "Statting the old file after renaming (Posix rename 2)" test_24o() { - check_kernel_version 37 || return 0 test_mkdir -p $DIR/d24o rename_many -s random -v -n 10 $DIR/d24o } @@ -2181,7 +2163,6 @@ test_31d() { run_test 31d "remove of open directory =========================" test_31e() { # bug 2904 - check_kernel_version 34 || return 0 openfilleddirunlink $DIR/d31e || error } run_test 31e "remove of open non-empty directory ===============" @@ -3876,19 +3857,14 @@ test_48a() { # bug 2399 [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.63) ] && skip "MDS prior to 2.3.63 handle ZFS dir .. incorrectly" && return - check_kernel_version 34 || return 0 - test_mkdir -p $DIR/$tdir + test_mkdir $DIR/$tdir cd $DIR/$tdir - mv $DIR/$tdir $DIR/d48.new || error "move directory failed" + mv $DIR/$tdir $DIR/$tdir.new || error "move directory failed" test_mkdir $DIR/$tdir || error "recreate directory failed" touch foo || error "'touch foo' failed after recreating cwd" - test_mkdir $DIR/$tdir/bar || - error "'mkdir foo' failed after recreating cwd" - if check_kernel_version 44; then - touch .foo || error "'touch .foo' failed after recreating cwd" - test_mkdir $DIR/$tdir/.bar || - error "'mkdir .foo' failed after recreating cwd" - fi + test_mkdir bar || error "'mkdir foo' failed after recreating cwd" + touch .foo || error "'touch .foo' failed after recreating cwd" + test_mkdir .bar || error "'mkdir .foo' failed after recreating cwd" ls . > /dev/null || error "'ls .' failed after recreating cwd" ls .. > /dev/null || error "'ls ..' failed after removing cwd" cd . || error "'cd .' failed after recreating cwd" @@ -3900,23 +3876,18 @@ test_48a() { # bug 2399 run_test 48a "Access renamed working dir (should return errors)=" test_48b() { # bug 2399 - check_kernel_version 34 || return 0 rm -rf $DIR/$tdir - test_mkdir -p $DIR/$tdir + test_mkdir $DIR/$tdir cd $DIR/$tdir rmdir $DIR/$tdir || error "remove cwd $DIR/$tdir failed" touch foo && error "'touch foo' worked after removing cwd" - test_mkdir $DIR/$tdir/foo && - error "'mkdir foo' worked after removing cwd" - if check_kernel_version 44; then - touch .foo && error "'touch .foo' worked after removing cwd" - test_mkdir $DIR/$tdir/.foo && - error "'mkdir .foo' worked after removing cwd" - fi + test_mkdir foo && error "'mkdir foo' worked after removing cwd" + touch .foo && error "'touch .foo' worked after removing cwd" + test_mkdir .foo && error "'mkdir .foo' worked after removing cwd" ls . > /dev/null && error "'ls .' worked after removing cwd" ls .. > /dev/null || error "'ls ..' failed after removing cwd" is_patchless || ( cd . && error "'cd .' worked after removing cwd" ) - test_mkdir $DIR/$tdir/. && error "'mkdir .' worked after removing cwd" + test_mkdir . && error "'mkdir .' worked after removing cwd" rmdir . && error "'rmdir .' worked after removing cwd" ln -s . foo && error "'ln -s .' worked after removing cwd" cd .. || echo "'cd ..' failed after removing cwd `pwd`" #bug 3517 @@ -3924,7 +3895,6 @@ test_48b() { # bug 2399 run_test 48b "Access removed working dir (should return errors)=" test_48c() { # bug 2350 - check_kernel_version 36 || return 0 #lctl set_param debug=-1 #set -vx rm -rf $DIR/$tdir @@ -3933,10 +3903,8 @@ test_48c() { # bug 2350 $TRACE rmdir $DIR/$tdir/dir || error "remove cwd $DIR/$tdir/dir failed" $TRACE touch foo && error "touch foo worked after removing cwd" $TRACE test_mkdir foo && error "'mkdir foo' worked after removing cwd" - if check_kernel_version 44; then - touch .foo && error "touch .foo worked after removing cwd" - test_mkdir .foo && error "mkdir .foo worked after removing cwd" - fi + touch .foo && error "touch .foo worked after removing cwd" + test_mkdir .foo && error "mkdir .foo worked after removing cwd" $TRACE ls . && error "'ls .' worked after removing cwd" $TRACE ls .. || error "'ls ..' failed after removing cwd" is_patchless || ( $TRACE cd . && @@ -3949,7 +3917,6 @@ test_48c() { # bug 2350 run_test 48c "Access removed working subdir (should return errors)" test_48d() { # bug 2350 - check_kernel_version 36 || return 0 #lctl set_param debug=-1 #set -vx rm -rf $DIR/$tdir @@ -3959,11 +3926,8 @@ test_48d() { # bug 2350 $TRACE rmdir $DIR/$tdir || error "remove parent $DIR/$tdir failed" $TRACE touch foo && error "'touch foo' worked after removing parent" $TRACE test_mkdir foo && error "mkdir foo worked after removing parent" - if check_kernel_version 44; then - touch .foo && error "'touch .foo' worked after removing parent" - test_mkdir .foo && - error "mkdir .foo worked after removing parent" - fi + touch .foo && error "'touch .foo' worked after removing parent" + test_mkdir .foo && error "mkdir .foo worked after removing parent" $TRACE ls . && error "'ls .' worked after removing parent" $TRACE ls .. && error "'ls ..' worked after removing parent" is_patchless || ( $TRACE cd . && @@ -3977,7 +3941,6 @@ test_48d() { # bug 2350 run_test 48d "Access removed parent subdir (should return errors)" test_48e() { # bug 4134 - check_kernel_version 41 || return 0 #lctl set_param debug=-1 #set -vx rm -rf $DIR/$tdir @@ -4367,7 +4330,6 @@ test_54d() { run_test 54d "fifo device works in lustre ======================" test_54e() { - check_kernel_version 46 || return 0 f="$DIR/f54e" string="aaaaaa" cp -aL /dev/console $f @@ -4982,10 +4944,10 @@ run_test 56x "lfs migration support" test_56y() { [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.53) ] && - skip "No HSM support on MDS of $(get_lustre_version)," \ - "need 2.4.53 at least" && return - local res="" + skip "No HSM $(lustre_build_version $SINGLEMDS) MDS < 2.4.53" && + return + local res="" local dir0=$DIR/$tdir/$testnum mkdir -p $dir0 || error "creating dir $dir0" local f1=$dir0/file1 @@ -5028,13 +4990,26 @@ test_56z() { # LU-4824 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') + 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_56aa() { # LU-5937 + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + + mkdir $DIR/$tdir + $LFS setdirstripe -c$MDSCOUNT $DIR/$tdir/striped_dir + + createmany -o $DIR/$tdir/striped_dir/${tfile}- 1024 + local dirs=$(lfs find --size +8k $DIR/$tdir/) + + [ -n "$dirs" ] || error "lfs find --size wrong under striped dir" +} +run_test 56aa "lfs find --size under striped dir" + test_57a() { [ $PARALLEL == "yes" ] && skip "skip parallel run" && return # note test will not do anything if MDS is not local @@ -5252,6 +5227,8 @@ test_63b() { dd if=/dev/zero of=$DIR/$tfile bs=4k count=1 rm $DIR/$tfile + sync # sync lest earlier test intercept the fail_loc + #define OBD_FAIL_OSC_BRW_PREP_REQ 0x406 lctl set_param fail_loc=0x80000406 $MULTIOP $DIR/$tfile Owy && \ @@ -5962,7 +5939,7 @@ test_78() { # bug 10901 [[ $F78SIZE -gt $MEMTOTAL ]] && F78SIZE=$MEMTOTAL [[ $F78SIZE -gt 512 ]] && F78SIZE=512 [[ $F78SIZE -gt $((MAXFREE / 1024)) ]] && F78SIZE=$((MAXFREE / 1024)) - SMALLESTOST=$(lfs df $DIR | grep OST | awk '{ print $4 }' | sort -n | + SMALLESTOST=$($LFS df $DIR | grep OST | awk '{ print $4 }' | sort -n | head -n1) echo "Smallest OST: $SMALLESTOST" [[ $SMALLESTOST -lt 10240 ]] && @@ -6657,14 +6634,14 @@ compare_stripe_info1() { for offset in $(seq 0 $[$STRIPE_COUNT - 1]); do local size=$((STRIPE_SIZE * num)) local file=file"$num-$offset-$count" - stripe_size=$(lfs getstripe -S $PWD/$file) + stripe_size=$($LFS getstripe -S $PWD/$file) [[ $stripe_size -ne $size ]] && error "$file: size $stripe_size != $size" - stripe_count=$(lfs getstripe -c $PWD/$file) + stripe_count=$($LFS getstripe -c $PWD/$file) # allow fewer stripes to be created, ORI-601 [[ $stripe_count -lt $(((3 * count + 3) / 4)) ]] && error "$file: count $stripe_count != $count" - stripe_index=$(lfs getstripe -i $PWD/$file) + stripe_index=$($LFS getstripe -i $PWD/$file) [[ $stripe_index -ne 0 ]] && stripe_index_all_zero=false done @@ -6959,15 +6936,41 @@ 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) ] && + skip "MDS needs to be at least 2.6.92" && return orphan_linkea_check $DIR/$tfile || error "orphan_linkea_check" } run_test 102q "flistxattr should not return trusted.link EAs for orphans" test_102r() { + [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.6.93) ] && + skip "MDS needs to be at least 2.6.93" && return touch $DIR/$tfile || error "touch" setfattr -n user.$(basename $tfile) $DIR/$tfile || error "setfattr" getfattr -n user.$(basename $tfile) $DIR/$tfile || error "getfattr" rm $DIR/$tfile || error "rm" + + #normal directory + mkdir -p $DIR/$tdir || error "mkdir" + setfattr -n user.$(basename $tdir) $DIR/$tdir || error "setfattr dir" + getfattr -n user.$(basename $tdir) $DIR/$tdir || error "getfattr dir" + setfattr -x user.$(basename $tdir) $DIR/$tdir || + error "$testfile error deleting user.author1" + getfattr -d -m user.$(basename $tdir) 2> /dev/null | + grep "user.$(basename $tdir)" && + error "$tdir did not delete user.$(basename $tdir)" + rmdir $DIR/$tdir || error "rmdir" + + #striped directory + test_mkdir -p $DIR/$tdir || error "make striped dir" + setfattr -n user.$(basename $tdir) $DIR/$tdir || error "setfattr dir" + getfattr -n user.$(basename $tdir) $DIR/$tdir || error "getfattr dir" + setfattr -x user.$(basename $tdir) $DIR/$tdir || + error "$testfile error deleting user.author1" + getfattr -d -m user.$(basename $tdir) 2> /dev/null | + grep "user.$(basename $tdir)" && + error "$tdir did not delete user.$(basename $tdir)" + rmdir $DIR/$tdir || error "rm striped dir" } run_test 102r "set EAs with empty values" @@ -8417,6 +8420,38 @@ test_124b() { } run_test 124b "lru resize (performance test) =======================" +test_124c() { + [ $PARALLEL == "yes" ] && skip "skip parallel run" && return + [ -z "$($LCTL get_param -n mdc.*.connect_flags | grep lru_resize)" ] && + skip "no lru resize on server" && return 0 + + # cache ununsed locks on client + local nr=100 + cancel_lru_locks mdc + test_mkdir -p $DIR/$tdir || error "failed to create $DIR/$tdir" + createmany -o $DIR/$tdir/f $nr || + error "failed to create $nr files in $DIR/$tdir" + ls -l $DIR/$tdir > /dev/null + + local nsdir="ldlm.namespaces.*-MDT0000-mdc-*" + local unused=$($LCTL get_param -n $nsdir.lock_unused_count) + local max_age=$($LCTL get_param -n $nsdir.lru_max_age) + local recalc_p=$($LCTL get_param -n $nsdir.pool.recalc_period) + echo "unused=$unused, max_age=$max_age, recalc_p=$recalc_p" + + # set lru_max_age to 1 sec + $LCTL set_param $nsdir.lru_max_age=1000 # jiffies + echo "sleep $((recalc_p * 2)) seconds..." + sleep $((recalc_p * 2)) + + local remaining=$($LCTL get_param -n $nsdir.lock_unused_count) + # restore lru_max_age + $LCTL set_param -n $nsdir.lru_max_age $max_age + [ $remaining -eq 0 ] || error "$remaining locks are not canceled" + unlinkmany $DIR/$tdir/f $nr +} +run_test 124c "LRUR cancel very aged locks" + test_125() { # 13358 [ -z "$(lctl get_param -n llite.*.client_type | grep local)" ] && skip "must run as local client" && return [ -z "$(lctl get_param -n mdc.*-mdc-*.connect_flags | grep acl)" ] && skip "must have acl enabled" && return @@ -8948,83 +8983,6 @@ test_131e() { } run_test 131e "test read hitting hole" -get_ost_param() { - local token=$1 - local gl_sum=0 - for node in $(osts_nodes); do - gl=$(do_node $node "$LCTL get_param -n ost.OSS.ost.stats" | awk '/'$token'/ {print $2}' | head -n 1) - [ x$gl = x"" ] && gl=0 - gl_sum=$((gl_sum + gl)) - done - echo $gl_sum -} - -som_mode_switch() { - local som=$1 - local gl1=$2 - local gl2=$3 - - if [ x$som = x"enabled" ]; then - [ $((gl2 - gl1)) -gt 0 ] && error "no glimpse RPC is expected" - MOUNT_OPTS=`echo $MOUNT_OPTS | - sed 's/som_preview,\|,som_preview\|som_preview//g'` - do_facet mgs "$LCTL conf_param $FSNAME.mdt.som=disabled" - else - [ $((gl2 - gl1)) -gt 0 ] || error "some glimpse RPC is expected" - MOUNT_OPTS="${MOUNT_OPTS:+$MOUNT_OPTS,}som_preview" - do_facet mgs "$LCTL conf_param $FSNAME.mdt.som=enabled" - fi - - # do remount to make new mount-conf parameters actual - echo remounting... - sync - stopall - setupall -} - -test_132() { #1028, SOM - [ $PARALLEL == "yes" ] && skip "skip parallel run" && return - remote_mds_nodsh && skip "remote MDS with nodsh" && return - local mdtidx=$($LFS getstripe -M $DIR) - local facet=mds$((mdtidx + 1)) - - local MOUNTOPT_SAVE=$MOUNTOPT - - dd if=/dev/zero of=$DIR/$tfile count=1 2>/dev/null - cancel_lru_locks osc - som1=$(do_facet $facet "$LCTL get_param mdt.*.som" | - awk -F= ' {print $2}' | head -n 1) - - gl1=$(get_ost_param "ldlm_glimpse_enqueue") - stat $DIR/$tfile >/dev/null - gl2=$(get_ost_param "ldlm_glimpse_enqueue") - echo "====> SOM is "$som1", "$((gl2 - gl1))" glimpse RPC occured" - rm $DIR/$tfile - som_mode_switch $som1 $gl1 $gl2 - - dd if=/dev/zero of=$DIR/$tfile count=1 2>/dev/null - cancel_lru_locks osc - - som2=$(do_facet $facet "$LCTL get_param mdt.*.som" | - awk -F= ' {print $2}' | head -n 1) - if [ $som1 == $som2 ]; then - error "som is still "$som2 - if [ x$som2 = x"enabled" ]; then - som2="disabled" - else - som2="enabled" - fi - fi - - gl1=$(get_ost_param "ldlm_glimpse_enqueue") - stat $DIR/$tfile >/dev/null - gl2=$(get_ost_param "ldlm_glimpse_enqueue") - echo "====> SOM is "$som2", "$((gl2 - gl1))" glimpse RPC occured" - som_mode_switch $som2 $gl1 $gl2 - MOUNT_OPTS=$MOUNT_OPTS_SAVE -} -run_test 132 "som avoids glimpse rpc" - check_stats() { local res local count @@ -9767,7 +9725,7 @@ test_154A() { [ -z "$FID" ] && error "path2fid unable to get $DIR/$tfile FID" # check that we get the same pathname back - local FOUND=$($LFS fid2path $MOUNT $FID) + local FOUND=$($LFS fid2path $MOUNT "$FID") [ -z "$FOUND" ] && error "fid2path unable to get $FID path" [ "$FOUND" != "$DIR/$tfile" ] && error "fid2path(path2fid($DIR/$tfile)) = $FOUND != $DIR/$tfile" @@ -9849,7 +9807,8 @@ test_154c() { N=$((N + 1)) done - $LFS fid2path $MOUNT $FID1 $FID2 $FID3 | while read PATHNAME; do + $LFS fid2path $MOUNT "$FID1" "$FID2" "$FID3" | while read PATHNAME; + do [ "$PATHNAME" = "$DIR/$tfile.$N" ] || error "fid2path pathname $PATHNAME != $DIR/$tfile.$N:" N=$((N + 1)) @@ -9873,13 +9832,13 @@ test_154d() { rm -f $DIR/$tfile touch $DIR/$tfile - fid=$($LFS path2fid $DIR/$tfile) + local fid=$($LFS path2fid $DIR/$tfile) # Open the file fd=$(free_fd) cmd="exec $fd<$DIR/$tfile" eval $cmd - fid_list=$(do_facet $SINGLEMDS $LCTL get_param $proc_ofile) - echo $fid_list | grep $fid + local fid_list=$(do_facet $SINGLEMDS $LCTL get_param $proc_ofile) + echo "$fid_list" | grep "$fid" rc=$? cmd="exec $fd>/dev/null" @@ -9977,6 +9936,16 @@ test_154f() { } run_test 154f "get parent fids by reading link ea" +test_154g() +{ + [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.92) ]] || + { skip "Need MDS version at least 2.6.92"; return 0; } + + mkdir -p $DIR/$tdir + llapi_fid_test -d $DIR/$tdir +} +run_test 154g "various llapi FID tests" + test_155_small_load() { local temp=$TMP/$tfile local file=$DIR/$tfile @@ -11110,7 +11079,7 @@ test_184c() { local ref2=$dir0/ref2 local file1=$dir0/file1 local file2=$dir0/file2 - # create a file large enough for the concurent test + # create a file large enough for the concurrent test dd if=/dev/urandom of=$ref1 bs=1M count=$((RANDOM % 50 + 20)) dd if=/dev/urandom of=$ref2 bs=1M count=$((RANDOM % 50 + 20)) echo "ref file size: ref1($(stat -c %s $ref1))," \ @@ -11961,7 +11930,7 @@ test_220() { #LU-325 local OSTIDX=0 test_mkdir -p $DIR/$tdir - local OST=$(lfs osts | grep ${OSTIDX}": " | \ + local OST=$($LFS osts | grep ${OSTIDX}": " | \ awk '{print $2}' | sed -e 's/_UUID$//') # on the mdt's osc @@ -12092,6 +12061,39 @@ test_224b() { # LU-1039, MRP-303 } run_test 224b "Don't panic on bulk IO failure" +test_224c() { # LU-6441 + [ $PARALLEL == "yes" ] && skip "skip parallel run" && return + local pages_per_rpc=$($LCTL get_param \ + osc.*.max_pages_per_rpc) + local at_max=$($LCTL get_param -n at_max) + local timeout=$($LCTL get_param -n timeout) + local test_at="$LCTL get_param -n at_max" + local param_at="$FSNAME.sys.at_max" + local test_timeout="$LCTL get_param -n timeout" + local param_timeout="$FSNAME.sys.timeout" + + $LCTL set_param -n osc.*.max_pages_per_rpc=1024 + + set_conf_param_and_check client "$test_at" "$param_at" 0 || + error "conf_param at_max=0 failed" + set_conf_param_and_check client "$test_timeout" "$param_timeout" 5 || + error "conf_param timeout=5 failed" + + #define OBD_FAIL_PTLRPC_CLIENT_BULK_CB3 0x520 + $LCTL set_param fail_loc=0x520 + dd if=/dev/zero of=$DIR/$tfile bs=8MB count=1 + sync + $LCTL set_param fail_loc=0 + + set_conf_param_and_check client "$test_at" "$param_at" $at_max || + error "conf_param at_max=$at_max failed" + set_conf_param_and_check client "$test_timeout" "$param_timeout" \ + $timeout || error "conf_param timeout=$timeout failed" + + $LCTL set_param -n $pages_per_rpc +} +run_test 224c "Don't hang if one of md lost during large bulk RPC" + MDSSURVEY=${MDSSURVEY:-$(which mds-survey 2>/dev/null || true)} test_225a () { [ $PARALLEL == "yes" ] && skip "skip parallel run" && return @@ -12374,8 +12376,8 @@ run_test 228c "NOT shrink the last entry in OI index node to recycle idle leaf" test_229() { # LU-2482, LU-3448 [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.53) ] && - skip "No HSM support on MDS of $(get_lustre_version)," \ - "need 2.4.53 at least" && return + skip "No HSM $(lustre_build_version $SINGLEMDS) MDS < 2.4.53" && + return [ $PARALLEL == "yes" ] && skip "skip parallel run" && return [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return @@ -12858,11 +12860,11 @@ test_238() { ln $DIR/$tfile $DIR/$tfile.lnk touch $DIR/$tfile.new mv $DIR/$tfile.new $DIR/$tfile - local fid1=$(lfs path2fid $DIR/$tfile) - local fid2=$(lfs path2fid $DIR/$tfile.lnk) - local path1=$(lfs fid2path $FSNAME $fid1) + local fid1=$($LFS path2fid $DIR/$tfile) + local fid2=$($LFS path2fid $DIR/$tfile.lnk) + local path1=$($LFS fid2path $FSNAME "$fid1") [ $tfile == $path1 ] || error "linkea inconsistent: $tfile $fid1 $path1" - local path2=$(lfs fid2path $FSNAME $fid2) + local path2=$($LFS fid2path $FSNAME "$fid2") [ $tfile.lnk == $path2 ] || error "linkea inconsistent: $tfile.lnk $fid2 $path2!" rm -f $DIR/$tfile* @@ -12929,6 +12931,16 @@ test_241() { } run_test 241 "bio vs dio" +test_241b() { + dd if=/dev/zero of=$DIR/$tfile count=1 bs=40960 + ls -la $DIR/$tfile + test_241_dio 1000 & + PID=$! + test_241_dio 1000 + wait $PID +} +run_test 241b "dio vs dio" + test_242() { mkdir -p $DIR/$tdir touch $DIR/$tdir/$tfile @@ -12949,6 +12961,16 @@ test_243() } run_test 243 "various group lock tests" +test_244() +{ + test_mkdir -p $DIR/$tdir + dd if=/dev/zero of=$DIR/$tdir/$tfile bs=1M count=35 + sendfile_grouplock $DIR/$tdir/$tfile || \ + error "sendfile+grouplock failed" + rm -rf $DIR/$tdir +} +run_test 244 "sendfile with group lock tests" + test_250() { [ "$(facet_fstype ost$(($($GETSTRIPE -i $DIR/$tfile) + 1)))" = "zfs" ] \ && skip "no 16TB file size limit on ZFS" && return @@ -12963,6 +12985,23 @@ test_250() { } run_test 250 "Write above 16T limit" +test_251() { + $SETSTRIPE -c -1 -S 1048576 $DIR/$tfile + + #define OBD_FAIL_LLITE_LOST_LAYOUT 0x1407 + #Skip once - writing the first stripe will succeed + $LCTL set_param fail_loc=0xa0001407 fail_val=1 + $MULTIOP $DIR/$tfile o:O_RDWR:w2097152c 2>&1 | grep -q "short write" && + error "short write happened" + + $LCTL set_param fail_loc=0xa0001407 fail_val=1 + $MULTIOP $DIR/$tfile or2097152c 2>&1 | grep -q "short read" && + error "short read happened" + + rm -f $DIR/$tfile +} +run_test 251 "Handling short read and write correctly" + cleanup_test_300() { trap 0 umask $SAVE_UMASK @@ -13016,6 +13055,11 @@ test_striped_dir() { [ $(stat -c%h $DIR/$tdir/striped_dir) == '2' ] || error "nlink error after rmdir" + chattr +i $DIR/$tdir/striped_dir + createmany -o $DIR/$tdir/striped_dir/f 10 && + error "immutable flags not working under striped dir!" + chattr -i $DIR/$tdir/striped_dir + rmdir $DIR/$tdir/striped_dir || error "rmdir striped dir error" @@ -13232,6 +13276,9 @@ test_300_check_default_striped_dir() mkdir $DIR/$tdir/$dirname/{test1,test2,test3,test4} || error "create dirs failed" + + createmany -o $DIR/$tdir/$dirname/f- 10 || error "create files failed" + unlinkmany $DIR/$tdir/$dirname/f- 10 || error "unlink files failed" for dir in $(find $DIR/$tdir/$dirname/*); do stripe_count=$($LFS getdirstripe -c $dir) [ $stripe_count -eq $default_count ] ||