. ${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
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
[ $(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
}
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 ============================================='
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"
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
}
}
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
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)"
}
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
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
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"
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 || \
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
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"
}
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
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
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
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
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
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 \
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
}
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"
}
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
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
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
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 ] ||
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
#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
}
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
}
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
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=''