X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fsanity.sh;h=03c9cc99bec1dae3f407d0a94e8c36a21829678c;hb=e709e661395af42471f5ecf3c87f2fa1d3031fbb;hp=e5f2143fa032872e6259ec9ffc31920a28e030f3;hpb=d24d8186ffb1aad3a4286e2fbda63f79e90eb104;p=fs%2Flustre-release.git diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index e5f2143..03c9cc9 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -58,11 +58,11 @@ init_test_env $@ . ${CONFIG:=$LUSTRE/tests/cfg/${NAME}.sh} init_logging -[ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 27m 64b 68 71 77f 78 115 124b 230d" +[ "$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-1957 LU-2805 - ALWAYS_EXCEPT="$ALWAYS_EXCEPT 34h 180 184c" + # 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" [ "$SLOW" = "no" ] && EXCEPT_SLOW="$EXCEPT_SLOW 51b 51ba" fi @@ -664,7 +664,7 @@ test_17n() { check_fs_consistency_17n || error "e2fsck report error after create files under remote dir" - for ((i=0;i<10;i++)); do + for ((i = 0; i < 10; i++)); do rm -rf $DIR/$tdir/remote_dir_${i} || error "destroy remote dir error $i" done @@ -675,16 +675,16 @@ test_17n() { [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.4.50) ] && skip "lustre < 2.4.50 does not support migrate mv " && return - for ((i=0; i<10; i++)); do + for ((i = 0; i < 10; i++)); do mkdir -p $DIR/$tdir/remote_dir_${i} createmany -o $DIR/$tdir/remote_dir_${i}/f 10 || error "create files under remote dir failed $i" - $LFS mv -M 1 $DIR/$tdir/remote_dir_${i} || + $LFS mv --mdt-index 1 $DIR/$tdir/remote_dir_${i} || error "migrate remote dir error $i" done check_fs_consistency_17n || error "e2fsck report error after migration" - for ((i=0;i<10;i++)); do + for ((i = 0; i < 10; i++)); do rm -rf $DIR/$tdir/remote_dir_${i} || error "destroy remote dir error $i" done @@ -1251,6 +1251,23 @@ test_24C() { } run_test 24C "check .. in striped dir" +test_24D() { # LU-6101 + local NFILES=50000 + + rm -rf $DIR/$tdir + mkdir -p $DIR/$tdir + createmany -m $DIR/$tdir/$tfile $NFILES + local t=$(ls $DIR/$tdir | wc -l) + local u=$(ls $DIR/$tdir | sort -u | wc -l) + local v=$(ls -ai $DIR/$tdir | sort -u | wc -l) + if [ $t -ne $NFILES -o $u -ne $NFILES -o $v -ne $((NFILES + 2)) ] ; then + error "Expected $NFILES files, got $t ($u unique $v .&..)" + fi + + rm -rf $DIR/$tdir || error "Can not delete directories" +} +run_test 24D "readdir() returns correct number of entries after cursor reload" + test_25a() { echo '== symlink sanity =============================================' @@ -1380,8 +1397,10 @@ test_27g() { run_test 27g "$GETSTRIPE with no objects" test_27i() { - touch $DIR/d27/fsome || error "touch failed" - [[ $($GETSTRIPE -c $DIR/d27/fsome) -gt 0 ]] || error "missing objects" + test_mkdir $DIR/$tdir + touch $DIR/$tdir/$tfile || error "touch failed" + [[ $($GETSTRIPE -c $DIR/$tdir/$tfile) -gt 0 ]] || + error "missing objects" } run_test 27i "$GETSTRIPE with some objects" @@ -1464,34 +1483,33 @@ exhaust_precreations() { local OSTIDX=$1 local FAILLOC=$2 local FAILIDX=${3:-$OSTIDX} + local ofacet=ost$((OSTIDX + 1)) - test_mkdir -p $DIR/$tdir - local MDSIDX=$(get_mds_dir "$DIR/$tdir") - echo OSTIDX=$OSTIDX MDSIDX=$MDSIDX + test_mkdir -p -c1 $DIR/$tdir + local mdtidx=$($LFS getstripe -M $DIR/$tdir) + local mfacet=mds$((mdtidx + 1)) + echo OSTIDX=$OSTIDX MDTIDX=$mdtidx local OST=$(ostname_from_index $OSTIDX) - local MDT_INDEX=$(lfs df | grep "\[MDT:$((MDSIDX - 1))\]" | awk '{print $1}' | \ - sed -e 's/_UUID$//;s/^.*-//') # on the mdt's osc - local mdtosc_proc1=$(get_mdtosc_proc_path mds${MDSIDX} $OST) - local last_id=$(do_facet mds${MDSIDX} lctl get_param -n \ + local mdtosc_proc1=$(get_mdtosc_proc_path $mfacet $OST) + local last_id=$(do_facet $mfacet lctl get_param -n \ osc.$mdtosc_proc1.prealloc_last_id) - local next_id=$(do_facet mds${MDSIDX} lctl get_param -n \ + local next_id=$(do_facet $mfacet lctl get_param -n \ osc.$mdtosc_proc1.prealloc_next_id) - local mdtosc_proc2=$(get_mdtosc_proc_path mds${MDSIDX}) - do_facet mds${MDSIDX} lctl get_param osc.$mdtosc_proc2.prealloc* + local mdtosc_proc2=$(get_mdtosc_proc_path $mfacet) + do_facet $mfacet lctl get_param osc.$mdtosc_proc2.prealloc* test_mkdir -p $DIR/$tdir/${OST} $SETSTRIPE -i $OSTIDX -c 1 $DIR/$tdir/${OST} #define OBD_FAIL_OST_ENOSPC 0x215 - do_facet ost$((OSTIDX + 1)) lctl set_param fail_val=$FAILIDX - do_facet ost$((OSTIDX + 1)) lctl set_param fail_loc=0x215 + do_facet $ofacet lctl set_param fail_val=$FAILIDX fail_loc=0x215 echo "Creating to objid $last_id on ost $OST..." createmany -o $DIR/$tdir/${OST}/f $next_id $((last_id - next_id + 2)) - do_facet mds${MDSIDX} lctl get_param osc.$mdtosc_proc2.prealloc* - do_facet ost$((OSTIDX + 1)) lctl set_param fail_loc=$FAILLOC + do_facet $mfacet lctl get_param osc.$mdtosc_proc2.prealloc* + do_facet $ofacet lctl set_param fail_loc=$FAILLOC sleep_maxage } @@ -2019,6 +2037,35 @@ test_27D() { } run_test 27D "validate llapi_layout API" +# Verify that default_easize is increased from its initial value after +# accessing a widely striped file. +test_27E() { + [ $OSTCOUNT -lt 2 ] && skip "needs >= 2 OSTs" && return + + # 72 bytes is the minimum space required to store striping + # information for a file striped across one OST: + # (sizeof(struct lov_user_md_v3) + + # sizeof(struct lov_user_ost_data_v1)) + local min_easize=72 + $LCTL set_param -n llite.*.default_easize $min_easize || + error "lctl set_param failed" + local easize=$($LCTL get_param -n llite.*.default_easize) + + [ $easize -eq $min_easize ] || + error "failed to set default_easize" + + $LFS setstripe -c $OSTCOUNT $DIR/$tfile || + error "setstripe failed" + cat $DIR/$tfile + rm $DIR/$tfile + + easize=$($LCTL get_param -n llite.*.default_easize) + + [ $easize -gt $min_easize ] || + error "default_easize not updated" +} +run_test 27E "check that default extended attribute size properly increases" + # createtest also checks that device nodes are created and # then visible correctly (#2091) test_28() { # bug 2091 @@ -2571,7 +2618,7 @@ test_33b() { rm -fr $DIR/d33 test_mkdir -p $DIR/d33 chown $RUNAS_ID $DIR/d33 - $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33 + $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33 || true } run_test 33b "test open file with malformed flags (No panic)" @@ -2713,6 +2760,35 @@ test_33e() { } run_test 33e "mkdir and striped directory should have same mode" +cleanup_33f() { + trap 0 + do_facet $SINGLEMDS $LCTL set_param mdt.*.enable_remote_dir_gid=0 +} + +test_33f() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + + mkdir $DIR/$tdir + chmod go+rwx $DIR/$tdir + do_facet $SINGLEMDS $LCTL set_param mdt.*.enable_remote_dir_gid=-1 + trap cleanup_33f EXIT + + $RUNAS lfs mkdir -c$MDSCOUNT $DIR/$tdir/striped_dir || + error "cannot create striped directory" + + $RUNAS touch $DIR/$tdir/striped_dir/{0..16} || + error "cannot create files in striped directory" + + $RUNAS rm $DIR/$tdir/striped_dir/{0..16} || + error "cannot remove files in striped directory" + + $RUNAS rmdir $DIR/$tdir/striped_dir || + error "cannot remove striped directory" + + cleanup_33f +} +run_test 33f "nonroot user can create, access, and remove a striped directory" + TEST_34_SIZE=${TEST_34_SIZE:-2000000000000} test_34a() { rm -f $DIR/f34 @@ -4780,6 +4856,8 @@ test_56v() { run_test 56v "check 'lfs find -mdt match with lfs getstripe -M' =======" test_56w() { + [[ $OSTCOUNT -lt 2 ]] && skip_env "$OSTCOUNT < 2 OSTs -- skipping" && + return [ $PARALLEL == "yes" ] && skip "skip parallel run" && return TDIR=$DIR/${tdir}w @@ -4830,6 +4908,29 @@ test_56w() { check_stripe_count $TDIR/file1 $expected + if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.90) ]; + then + # lfs_migrate file onto OST 0 if it is on OST 1, or onto + # OST 1 if it is on OST 0. This file is small enough to + # be on only one stripe. + file=$TDIR/migr_1_ost + dd bs=$dd_bs count=1 if=/dev/urandom of=$file >/dev/null 2>&1 || + error "write data into $file failed" + local obdidx=$($LFS getstripe -i $file) + local oldmd5=$(md5sum $file) + local newobdidx=0 + [[ $obdidx -eq 0 ]] && newobdidx=1 + cmd="$LFS migrate -i $newobdidx $file" + echo $cmd + eval $cmd || error "$cmd failed" + local realobdix=$($LFS getstripe -i $file) + local newmd5=$(md5sum $file) + [[ $newobdidx -ne $realobdix ]] && + error "new OST is different (was=$obdidx, wanted=$newobdidx, got=$realobdix)" + [[ "$oldmd5" != "$newmd5" ]] && + error "md5sum differ: $oldmd5, $newmd5" + fi + # lfs_migrate dir cmd="$LFS_MIGRATE -y -c $expected $TDIR/dir1" echo "$cmd" @@ -4964,16 +5065,17 @@ test_57b() { fi remote_mds_nodsh && skip "remote MDS with nodsh" && return - local dir=$DIR/d57b + local dir=$DIR/$tdir local FILECOUNT=100 local FILE1=$dir/f1 local FILEN=$dir/f$FILECOUNT rm -rf $dir || error "removing $dir" - test_mkdir -p $dir || error "creating $dir" - local num=$(get_mds_dir $dir) - local mymds=mds$num + test_mkdir -p -c1 $dir || error "creating $dir" + local mdtidx=$($LFS getstripe -M $dir) + local mdtname=MDT$(printf %04x $mdtidx) + local facet=mds$((mdtidx + 1)) echo "mcreating $FILECOUNT files" createmany -m $dir/f 1 $FILECOUNT || \ @@ -4986,9 +5088,9 @@ test_57b() { sync sleep 1 df $dir #make sure we get new statfs data - local MDSFREE=$(do_facet $mymds \ - lctl get_param -n osd*.*MDT000$((num -1)).kbytesfree) - local MDCFREE=$(lctl get_param -n mdc.*MDT000$((num -1))-mdc-*.kbytesfree) + local MDSFREE=$(do_facet $facet \ + lctl get_param -n osd*.*$mdtname.kbytesfree) + local MDCFREE=$(lctl get_param -n mdc.*$mdtname-mdc-*.kbytesfree) echo "opening files to create objects/EAs" local FILE for FILE in `seq -f $dir/f%g 1 $FILECOUNT`; do @@ -5001,9 +5103,9 @@ test_57b() { sleep 1 #make sure we get new statfs data df $dir - local MDSFREE2=$(do_facet $mymds \ - lctl get_param -n osd*.*MDT000$((num -1)).kbytesfree) - local MDCFREE2=$(lctl get_param -n mdc.*MDT000$((num -1))-mdc-*.kbytesfree) + local MDSFREE2=$(do_facet $facet \ + lctl get_param -n osd*.*$mdtname.kbytesfree) + local MDCFREE2=$(lctl get_param -n mdc.*$mdtname-mdc-*.kbytesfree) if [[ $MDCFREE2 -lt $((MDCFREE - 16)) ]]; then if [ "$MDSFREE" != "$MDSFREE2" ]; then error "MDC before $MDCFREE != after $MDCFREE2" @@ -6856,6 +6958,19 @@ test_102p() { # LU-4703 setxattr did not check ownership } run_test 102p "check setxattr(2) correctly fails without permission" +test_102q() { + orphan_linkea_check $DIR/$tfile || error "orphan_linkea_check" +} +run_test 102q "flistxattr should not return trusted.link EAs for orphans" + +test_102r() { + 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" +} +run_test 102r "set EAs with empty values" + run_acl_subtest() { $LUSTRE/tests/acl/run $LUSTRE/tests/acl/$1.test @@ -7287,12 +7402,10 @@ run_test 116a "stripe QOS: free space balance ===================" test_116b() { # LU-2093 [ $PARALLEL == "yes" ] && skip "skip parallel run" && return - [ -z "$($LCTL get_param -n lo*.$FSNAME-MDT0000-mdtlov.qos_threshold_rr | - head -1 2>/dev/null)" ] && skip "no QOS" && return #define OBD_FAIL_MDS_OSC_CREATE_FAIL 0x147 - local old_rr - old_rr=$(do_facet $SINGLEMDS lctl get_param -n \ - lo*.$FSNAME-MDT0000-mdtlov.qos_threshold_rr | head -1) + local old_rr=$(do_facet $SINGLEMDS lctl get_param -n \ + lo*.$FSNAME-MDT0000-mdtlov.qos_threshold_rr | head -1) + [ -z "$old_rr" ] && skip "no QOS" && return 0 do_facet $SINGLEMDS lctl set_param \ lo*.$FSNAME-MDT0000-mdtlov.qos_threshold_rr=0 mkdir -p $DIR/$tdir @@ -8172,6 +8285,10 @@ test_124a() { local MAX_HRS=10 local LIMIT=$($LCTL get_param -n $NSDIR.pool.limit) log "LIMIT=$LIMIT" + if [ $LIMIT -lt $LRU_SIZE ]; then + skip "Limit is too small $LIMIT" + return 0 + fi # Make LVF so higher that sleeping for $SLEEP is enough to _start_ # killing locks. Some time was spent for creating locks. This means @@ -8867,15 +8984,16 @@ som_mode_switch() { test_132() { #1028, SOM [ $PARALLEL == "yes" ] && skip "skip parallel run" && return - remote_mds_nodsh && skip "remote MDS with nodsh" && return - local num=$(get_mds_dir $DIR) - local mymds=mds${num} - local MOUNT_OPTS_SAVE=$MOUNT_OPTS + remote_mds_nodsh && skip "remote MDS with nodsh" && return + local mdtidx=$($LFS getstripe -M $DIR) + local facet=mds$((mdtidx + 1)) - dd if=/dev/zero of=$DIR/$tfile count=1 2>/dev/null - cancel_lru_locks osc + local MOUNTOPT_SAVE=$MOUNTOPT - som1=$(do_facet $mymds "$LCTL get_param -n mdt.*.som" | head -n 1) + 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 @@ -8887,7 +9005,8 @@ test_132() { #1028, SOM dd if=/dev/zero of=$DIR/$tfile count=1 2>/dev/null cancel_lru_locks osc - som2=$(do_facet $mymds "$LCTL get_param -n mdt.*.som" | head -n 1) + 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 @@ -9269,10 +9388,10 @@ test_133g() { error "find $proc_dirs failed" [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.5.54) ] && - skip "Too old lustre on MDS" + skip "Too old lustre on MDS" && return [ $(lustre_version_code ost1) -le $(version_code 2.5.54) ] && - skip "Too old lustre on ost1" + skip "Too old lustre on ost1" && return for facet in $SINGLEMDS ost1; do do_facet $facet find $proc_dirs \ @@ -10507,6 +10626,8 @@ check_path() { local fid=$2 local path=$(${LFS} fid2path $*) + # Remove the '//' indicating a remote directory + path=$(echo $path | sed 's#//#/#g') RC=$? if [ $RC -ne 0 ]; then @@ -10601,6 +10722,33 @@ test_162b() { } run_test 162b "striped directory path lookup sanity" +# LU-4239: Verify fid2path works with paths 100 or more directories deep +test_162c() { + test_mkdir $DIR/$tdir.local + test_mkdir $DIR/$tdir.remote + local lpath=$tdir.local + local rpath=$tdir.remote + + for ((i = 0; i <= 101; i++)); do + lpath="$lpath/$i" + mkdir $DIR/$lpath + FID=$($LFS path2fid $DIR/$lpath | tr -d '[]') || + error "get fid for local directory $DIR/$lpath failed" + check_path "$DIR/$lpath" $MOUNT $FID --link 0 || + error "check path for local directory $DIR/$lpath failed" + + rpath="$rpath/$i" + test_mkdir $DIR/$rpath + FID=$($LFS path2fid $DIR/$rpath | tr -d '[]') || + error "get fid for remote directory $DIR/$rpath failed" + check_path "$DIR/$rpath" $MOUNT $FID --link 0 || + error "check path for remote directory $DIR/$rpath failed" + done + + return 0 +} +run_test 162c "fid2path works with paths 100 or more directories deep" + test_169() { # do directio so as not to populate the page cache log "creating a 10 Mb file" @@ -11031,6 +11179,39 @@ test_184d() { } run_test 184d "allow stripeless layouts swap" +test_184e() { + check_swap_layouts_support && return 0 + [ -z "$(which getfattr 2>/dev/null)" ] && + skip "no getfattr command" && return 0 + + local file1=$DIR/$tdir/$tfile-1 + local file2=$DIR/$tdir/$tfile-2 + local file3=$DIR/$tdir/$tfile-3 + local lovea + + mkdir -p $DIR/$tdir + touch $file1 || error "create $file1 failed" + $OPENFILE -f O_CREAT:O_LOV_DELAY_CREATE $file2 || + error "create $file2 failed" + $OPENFILE -f O_CREAT:O_LOV_DELAY_CREATE $file3 || + error "create $file3 failed" + + $LFS swap_layouts $file1 $file2 || + error "swap $file1 $file2 layouts failed" + + lovea=$(getfattr -n trusted.lov $file1 | grep ^trusted) + [[ -z "$lovea" ]] || error "$file1 shouldn't have lovea" + + echo 123 > $file1 || error "Should be able to write into $file1" + + $LFS swap_layouts $file1 $file3 || + error "swap $file1 $file3 layouts failed" + + echo 123 > $file1 || error "Should be able to write into $file1" + + rm -rf $file1 $file2 $file3 +} +run_test 184e "Recreate layout after stripeless layout swaps" test_185() { # LU-2441 # LU-3553 - no volatile file support in old servers @@ -11112,6 +11293,7 @@ test_200() { local ost_range="$first_ost $last_ost $ost_step" local test_path=$POOL_ROOT/$POOL_DIR_NAME local file_dir=$POOL_ROOT/file_tst + local subdir=$test_path/subdir local rc=0 while : ; do @@ -11122,6 +11304,8 @@ test_200() { mkdir -p $test_path pool_set_dir $POOL $test_path || { rc=$? ; break; } pool_check_dir $POOL $test_path || { rc=$? ; break; } + mkdir -p $subdir + pool_check_dir $POOL $subdir || { rc=$? ; break; } pool_dir_rel_path $POOL $POOL_DIR_NAME $POOL_ROOT \ || { rc=$? ; break; } # former test_200e test_200f @@ -12286,10 +12470,10 @@ test_230b() { ln -s $other_dir/$tfile $migrate_dir/${tfile}_ln_other $LFS mv -v -M $MDTIDX $migrate_dir || - error "migrate remote dir error" + error "migrate remote dir error" echo "migratate to MDT1, then checking.." - for ((i=0; i<10; i++)); do + for ((i = 0; i < 10; i++)); do for file in $(find $migrate_dir/dir_${i}); do mdt_index=$($LFS getstripe -M $file) [ $mdt_index == $MDTIDX ] || @@ -12341,16 +12525,16 @@ test_230b() { stripe_count=$($LFS getstripe -c $migrate_dir/dir_default_stripe2) [ $stripe_count = 2 ] || - error "dir strpe_count $d != 2 after migration." + error "dir strpe_count $d != 2 after migration." stripe_count=$($LFS getstripe -c $migrate_dir/${tfile}_stripe2) [ $stripe_count = 2 ] || - error "file strpe_count $d != 2 after migration." + error "file strpe_count $d != 2 after migration." #migrate back to MDT0 MDTIDX=0 $LFS mv -v -M $MDTIDX $migrate_dir || - error "migrate remote dir error" + error "migrate remote dir error" echo "migrate back to MDT0, checking.." for file in $(find $migrate_dir); do @@ -12423,10 +12607,10 @@ test_230c() { #OBD_FAIL_MIGRATE_ENTRIES 0x1801 do_facet mds1 lctl set_param fail_loc=0x20001801 do_facet mds1 lctl set_param fail_val=5 - local t=`ls $DIR/$tdir | wc -l` - $LFS mv -M $MDTIDX $DIR/$tdir && - error "migrate should failed after 5 entries" - local u=`ls $DIR/$tdir | wc -l` + local t=$(ls $DIR/$tdir | wc -l) + $LFS mv --mdt-index $MDTIDX $DIR/$tdir && + error "migrate should fail after 5 entries" + local u=$(ls $DIR/$tdir | wc -l) [ "$u" == "$t" ] || error "$u != $t during migration" for file in $(find $DIR/$tdir); do @@ -12737,6 +12921,26 @@ test_241() { } run_test 241 "bio vs dio" +test_242() { + mkdir -p $DIR/$tdir + touch $DIR/$tdir/$tfile + + #define OBD_FAIL_MDS_READPAGE_PACK 0x105 + do_facet mds1 lctl set_param fail_loc=0x105 + /bin/ls $DIR/$tdir && error "ls $DIR/$tdir should fail" + + do_facet mds1 lctl set_param fail_loc=0 + /bin/ls $DIR/$tdir || error "ls $DIR/$tdir failed" +} +run_test 242 "mdt_readpage failure should not cause directory unreadable" + +test_243() +{ + test_mkdir -p $DIR/$tdir + group_lock_test -d $DIR/$tdir || error "A group lock test failed" +} +run_test 243 "various group lock tests" + cleanup_test_300() { trap 0 umask $SAVE_UMASK @@ -12982,55 +13186,111 @@ test_300f() { } run_test 300f "check rename cross striped directory" +test_300_check_default_striped_dir() +{ + local dirname=$1 + local default_count=$2 + local default_index=$3 + local stripe_count + local stripe_index + local dir_stripe_index + local dir + + echo "checking $dirname $default_count $default_index" + $LFS setdirstripe -D -c $default_count -i $default_index \ + -t all_char $DIR/$tdir/$dirname || + error "set default stripe on striped dir error" + stripe_count=$($LFS getdirstripe -D -c $DIR/$tdir/$dirname) + [ $stripe_count -eq $default_count ] || + error "expect $default_count get $stripe_count for $dirname" + + stripe_index=$($LFS getdirstripe -D -i $DIR/$tdir/$dirname) + [ $stripe_index -eq $default_index ] || + error "expect $default_index get $stripe_index for $dirname" + + mkdir $DIR/$tdir/$dirname/{test1,test2,test3,test4} || + error "create dirs failed" + for dir in $(find $DIR/$tdir/$dirname/*); do + stripe_count=$($LFS getdirstripe -c $dir) + [ $stripe_count -eq $default_count ] || + error "stripe count $default_count != $stripe_count for $dir" + + stripe_index=$($LFS getdirstripe -i $dir) + [ $default_index -eq -1 -o $stripe_index -eq $default_index ] || + error "$stripe_index != $default_index for $dir" + + #check default stripe + stripe_count=$($LFS getdirstripe -D -c $dir) + [ $stripe_count -eq $default_count ] || + error "default count $default_count != $stripe_count for $dir" + + stripe_index=$($LFS getdirstripe -D -i $dir) + [ $stripe_index -eq $default_index ] || + error "default index $default_index != $stripe_index for $dir" + done + rmdir $DIR/$tdir/$dirname/* || error "rmdir failed" +} + test_300g() { [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return - local stripe_count local dir + local stripe_count + local stripe_index mkdir $DIR/$tdir - $LFS setdirstripe -i 0 -c $MDSCOUNT -t all_char \ - $DIR/$tdir/striped_dir || - error "set striped dir error" + mkdir $DIR/$tdir/normal_dir - $LFS setdirstripe -D -c $MDSCOUNT -t all_char $DIR/$tdir/striped_dir || - error "set default stripe on striped dir error" - - stripe_count=$($LFS getdirstripe -D -c $DIR/$tdir/striped_dir) - [ $stripe_count -eq $MDSCOUNT ] || - error "default stripe wrong expect $MDSCOUNT get $stripe_count" + test_300_check_default_striped_dir normal_dir $MDSCOUNT 1 + test_300_check_default_striped_dir normal_dir 1 0 + test_300_check_default_striped_dir normal_dir 2 1 + test_300_check_default_striped_dir normal_dir 2 -1 - mkdir -p $DIR/$tdir/striped_dir/{test1,test2,test3,test4} + #delete default stripe information + echo "delete default stripeEA" + $LFS setdirstripe -d $DIR/$tdir/normal_dir || + error "set default stripe on striped dir error" - for dir in $(find $DIR/$tdir/striped_dir/*); do + mkdir -p $DIR/$tdir/normal_dir/{test1,test2,test3,test4} + for dir in $(find $DIR/$tdir/normal_dir/*); do stripe_count=$($LFS getdirstripe -c $dir) - [ $stripe_count -eq $MDSCOUNT ] || - error "expect $MDSCOUNT get $stripe_count for $dir" + [ $stripe_count -eq 0 ] || + error "expect 1 get $stripe_count for $dir" + stripe_index=$($LFS getdirstripe -i $dir) + [ $stripe_index -eq 0 ] || + error "expect 0 get $stripe_index for $dir" done +} +run_test 300g "check default striped directory for normal directory" - rmdir $DIR/$tdir/striped_dir/* || error "rmdir1 failed" - #change default stripe count to 2 - $LFS setdirstripe -D -c 2 -t all_char $DIR/$tdir/striped_dir || - error "set default stripe on striped dir error" +test_300h() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local dir + local stripe_count - mkdir -p $DIR/$tdir/striped_dir/{test1,test2,test3,test4} + mkdir $DIR/$tdir + $LFS setdirstripe -i 0 -c $MDSCOUNT -t all_char \ + $DIR/$tdir/striped_dir || + error "set striped dir error" - rmdir $DIR/$tdir/striped_dir/* || error "rmdir2 failed" + test_300_check_default_striped_dir striped_dir $MDSCOUNT 1 + test_300_check_default_striped_dir striped_dir 1 0 + test_300_check_default_striped_dir striped_dir 2 1 + test_300_check_default_striped_dir striped_dir 2 -1 - #change default stripe count to 1 - $LFS setdirstripe -D -c 1 -t all_char $DIR/$tdir/striped_dir || + #delete default stripe information + $LFS setdirstripe -d $DIR/$tdir/striped_dir || error "set default stripe on striped dir error" mkdir -p $DIR/$tdir/striped_dir/{test1,test2,test3,test4} for dir in $(find $DIR/$tdir/striped_dir/*); do stripe_count=$($LFS getdirstripe -c $dir) - [ $stripe_count -eq 1 ] || + [ $stripe_count -eq 0 ] || error "expect 1 get $stripe_count for $dir" done - rmdir $DIR/$tdir/striped_dir/* || error "rmdir3 failed" } -run_test 300g "check default striped directory for striped directory" +run_test 300h "check default striped directory for striped directory" -test_300h() { +test_300i() { [ $PARALLEL == "yes" ] && skip "skip parallel run" && return [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return local stripe_count @@ -13068,7 +13328,7 @@ test_300h() { return 0 } -run_test 300h "client handle unknown hash type striped directory" +run_test 300i "client handle unknown hash type striped directory" test_400a() { # LU-1606, was conf-sanity test_74 local extra_flags=''