ALWAYS_EXCEPT+=" 130a 130b 130c 130d 130e 130f 130g"
fi
+proc_regexp="/{proc,sys}/{fs,sys,kernel/debug}/{lustre,lnet}/"
+
# Get the SLES distro version
#
# Returns a version string that should only be used in comparing
# cleanup the directory
rm -fr $dir
- test_mkdir -c1 $dir
+ mkdir_on_mdt -i $((RANDOM % MDSCOUNT)) $dir
$LFS df
$LFS df -i
$LCTL get_param -R '*' &> /dev/null
# Verifing writability with badarea_io.
+ local proc_dirs=$(eval \ls -d $proc_regexp 2>/dev/null)
+ local skipped_params='force_lbug|changelog_mask|daemon_file'
$LCTL list_param -FR '*' | grep '=' | tr -d = |
- egrep -v 'force_lbug|changelog_mask' | xargs badarea_io ||
+ egrep -v "$skipped_params" |
+ xargs -n 1 find $proc_dirs -name |
+ xargs -n 1 badarea_io ||
error "client badarea_io failed"
# remount the FS in case writes/reads /proc break the FS
remote_mds_nodsh && skip "remote MDS with nodsh"
remote_ost_nodsh && skip "remote OST with nodsh"
+ local proc_dirs=$(eval \ls -d $proc_regexp 2>/dev/null)
+ local skipped_params="'force_lbug|changelog_mask|daemon_file'"
local facet
for facet in mds1 ost1; do
local facet_ver=$(lustre_version_code $facet)
fi
if [ $facet_ver -ge $(version_code 2.5.54) ]; then
do_facet $facet "$LCTL list_param -FR '*' | grep '=' |
- tr -d = | egrep -v 'force_lbug|changelog_mask' |
- xargs badarea_io" ||
+ tr -d = | egrep -v $skipped_params |
+ xargs -n 1 find $proc_dirs -name |
+ xargs -n 1 badarea_io" ||
error "$facet badarea_io failed"
else
skip_noexit "$facet: too old lustre for get_param -R"
[ -n "$FILESET" ] && skip "SKIP due to FILESET set"
# create parent directory on a single MDT to avoid cross-MDT hardlinks
- test_mkdir -p -c1 $DIR/$tdir/d
+ mkdir_on_mdt0 $DIR/$tdir
# test dirs inherit from its stripe
- mkdir -p $DIR/$tdir/d/foo1 || error "mkdir error"
- mkdir -p $DIR/$tdir/d/foo2 || error "mkdir error"
- cp /etc/hosts $DIR/$tdir/d/foo1/$tfile
- ln $DIR/$tdir/d/foo1/$tfile $DIR/$tdir/d/foo2/link
+ mkdir -p $DIR/$tdir/foo1 || error "mkdir error"
+ mkdir -p $DIR/$tdir/foo2 || error "mkdir error"
+ cp /etc/hosts $DIR/$tdir/foo1/$tfile
+ ln $DIR/$tdir/foo1/$tfile $DIR/$tdir/foo2/link
touch $DIR/f
# get fid of parents
- local FID0=$($LFS path2fid $DIR/$tdir/d)
- local FID1=$($LFS path2fid $DIR/$tdir/d/foo1)
- local FID2=$($LFS path2fid $DIR/$tdir/d/foo2)
+ local FID0=$($LFS path2fid $DIR/$tdir)
+ local FID1=$($LFS path2fid $DIR/$tdir/foo1)
+ local FID2=$($LFS path2fid $DIR/$tdir/foo2)
local FID3=$($LFS path2fid $DIR)
# check that path2fid --parents returns expected <parent_fid>/name
# 1) test for a directory (single parent)
- local parent=$($LFS path2fid --parents $DIR/$tdir/d/foo1)
+ local parent=$($LFS path2fid --parents $DIR/$tdir/foo1)
[ "$parent" == "$FID0/foo1" ] ||
error "expected parent: $FID0/foo1, got: $parent"
# 2) test for a file with nlink > 1 (multiple parents)
- parent=$($LFS path2fid --parents $DIR/$tdir/d/foo1/$tfile)
+ parent=$($LFS path2fid --parents $DIR/$tdir/foo1/$tfile)
echo "$parent" | grep -F "$FID1/$tfile" ||
error "$FID1/$tfile not returned in parent list"
echo "$parent" | grep -F "$FID2/link" ||
error "$FID2/link not returned in parent list"
# 3) get parent by fid
- local file_fid=$($LFS path2fid $DIR/$tdir/d/foo1/$tfile)
+ local file_fid=$($LFS path2fid $DIR/$tdir/foo1/$tfile)
parent=$($LFS path2fid --parents $MOUNT/.lustre/fid/$file_fid)
echo "$parent" | grep -F "$FID1/$tfile" ||
error "$FID1/$tfile not returned in parent list (by fid)"
lctl set_param llite.*.xattr_cache 1
# 6.1) linkea update on rename
- mv $DIR/$tdir/d/foo1/$tfile $DIR/$tdir/d/foo2/$tfile.moved
+ mv $DIR/$tdir/foo1/$tfile $DIR/$tdir/foo2/$tfile.moved
# get parents by fid
parent=$($LFS path2fid --parents $MOUNT/.lustre/fid/$file_fid)
error "$FID2/$tfile.moved is not in parent list"
# 6.2) linkea update on unlink
- rm -f $DIR/$tdir/d/foo2/link
+ rm -f $DIR/$tdir/foo2/link
parent=$($LFS path2fid --parents $MOUNT/.lustre/fid/$file_fid)
# foo2/link should no longer be returned in parent list
echo "$parent" | grep -F "$FID2/link" &&
$CLIENT_VERSION -gt $(version_code 2.6.99) ]] ||
skip "Need MDS version at least 2.6.92"
- mkdir -p $DIR/$tdir
+ mkdir_on_mdt0 $DIR/$tdir
llapi_fid_test -d $DIR/$tdir
}
run_test 154g "various llapi FID tests"
mkdir_on_mdt0 $DIR/$tdir || error "mkdir $tdir failed"
$LFS mkdir -i $((MDSCOUNT - 1)) $DIR/$tdir/remote ||
error "mkdir remote failed"
- mkdir $DIR/$tdir/remote/subdir || error "mkdir remote/subdir failed"
+ $LFS mkdir -i $((MDSCOUNT - 1)) $DIR/$tdir/remote/subdir ||
+ error "mkdir remote/subdir failed"
$LFS mkdir -i 0 -c $MDSCOUNT $DIR/$tdir/striped ||
error "mkdir striped failed"
mkdir $DIR/$tdir/striped/subdir || error "mkdir striped/subdir failed"
stripe_count=$($LFS getdirstripe -c $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"
#count the number of parameters by "list_param -R"
local params=$($LCTL list_param -R '*' 2>/dev/null | wc -l)
#count the number of parameters by listing proc files
- local proc_regexp="/{proc,sys}/{fs,sys,kernel/debug}/{lustre,lnet}/"
local proc_dirs=$(eval \ls -d $proc_regexp 2>/dev/null)
echo "proc_dirs='$proc_dirs'"
[ -n "$proc_dirs" ] || error "no proc_dirs on $HOSTNAME"
}
run_test 412 "mkdir on specific MDTs"
+generate_uneven_mdts() {
+ local threshold=$1
+ local ffree
+ local bavail
+ local max
+ local min
+ local max_index
+ local min_index
+ local tmp
+ local i
+
+ echo
+ echo "Check for uneven MDTs: "
+
+ ffree=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.filesfree))
+ bavail=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.kbytesavail))
+ bsize=$(lctl get_param -n mdc.*MDT0000*.blocksize)
+
+ max=$(((${ffree[0]} >> 8) * (${bavail[0]} * bsize >> 16)))
+ min=$(((${ffree[0]} >> 8) * (${bavail[0]} * bsize >> 16)))
+ max_index=0
+ min_index=0
+ for ((i = 1; i < ${#ffree[@]}; i++)); do
+ tmp=$(((${ffree[i]} >> 8) * (${bavail[i]} * bsize >> 16)))
+ if [ $tmp -gt $max ]; then
+ max=$tmp
+ max_index=$i
+ fi
+ if [ $tmp -lt $min ]; then
+ min=$tmp
+ min_index=$i
+ fi
+ done
+
+ # Check if we need to generate uneven MDTs
+ local diff=$(((max - min) * 100 / min))
+ local testdir=$DIR/$tdir-fillmdt
+
+ mkdir -p $testdir
+
+ i=0
+ while (( diff < threshold )); do
+ # generate uneven MDTs, create till $threshold% diff
+ echo -n "weight diff=$diff% must be > $threshold% ..."
+ echo "Fill MDT$min_index with 100 files: loop $i"
+ testdir=$DIR/$tdir-fillmdt/$i
+ [ -d $testdir ] || $LFS mkdir -i $min_index $testdir ||
+ error "mkdir $testdir failed"
+ $LFS setstripe -E 1M -L mdt $testdir ||
+ error "setstripe $testdir failed"
+ for F in f.{0..99}; do
+ dd if=/dev/zero of=$testdir/$F bs=1M count=1 > \
+ /dev/null 2>&1 || error "dd $F failed"
+ done
+
+ ffree=($(lctl get_param -n mdc.*[mM][dD][cC]-*.filesfree))
+ bavail=($(lctl get_param -n mdc.*[mM][dD][cC]-*.kbytesavail))
+ max=$(((${ffree[max_index]} >> 8) * \
+ (${bavail[max_index]} * bsize >> 16)))
+ min=$(((${ffree[min_index]} >> 8) * \
+ (${bavail[min_index]} * bsize >> 16)))
+ diff=$(((max - min) * 100 / min))
+ i=$((i + 1))
+ done
+
+ echo "MDT filesfree available: ${ffree[@]}"
+ echo "MDT blocks available: ${bavail[@]}"
+ echo "weight diff=$diff%"
+}
+
test_qos_mkdir() {
local mkdir_cmd=$1
local stripe_count=$2
lmv_qos_threshold_rr=${lmv_qos_threshold_rr%%%}
lmv_qos_maxage=$($LCTL get_param -n lmv.*.qos_maxage)
stack_trap "$LCTL set_param \
- lmv.*.qos_prio_free=$lmv_qos_prio_free > /dev/null" EXIT
+ lmv.*.qos_prio_free=$lmv_qos_prio_free > /dev/null"
stack_trap "$LCTL set_param \
- lmv.*.qos_threshold_rr=$lmv_qos_threshold_rr > /dev/null" EXIT
+ lmv.*.qos_threshold_rr=$lmv_qos_threshold_rr > /dev/null"
stack_trap "$LCTL set_param \
- lmv.*.qos_maxage=$lmv_qos_maxage > /dev/null" EXIT
+ lmv.*.qos_maxage=$lmv_qos_maxage > /dev/null"
lod_qos_prio_free=$(do_facet mds1 $LCTL get_param -n \
lod.$FSNAME-MDT0000-mdtlov.mdt_qos_prio_free | head -n1)
lod_qos_maxage=$(do_facet mds1 $LCTL get_param -n \
lod.$FSNAME-MDT0000-mdtlov.qos_maxage | awk '{ print $1 }')
stack_trap "do_nodes $mdts $LCTL set_param \
- lod.*.mdt_qos_prio_free=$lod_qos_prio_free > /dev/null" EXIT
+ lod.*.mdt_qos_prio_free=$lod_qos_prio_free > /dev/null"
stack_trap "do_nodes $mdts $LCTL set_param \
- lod.*.mdt_qos_threshold_rr=$lod_qos_threshold_rr > /dev/null" \
- EXIT
+ lod.*.mdt_qos_threshold_rr=$lod_qos_threshold_rr > /dev/null"
stack_trap "do_nodes $mdts $LCTL set_param \
- lod.*.mdt_qos_maxage=$lod_qos_maxage > /dev/null" EXIT
+ lod.*.mdt_qos_maxage=$lod_qos_maxage > /dev/null"
$LCTL set_param lmv.*.qos_threshold_rr=100 > /dev/null
do_nodes $mdts $LCTL set_param lod.*.mdt_qos_threshold_rr=100 > /dev/null
local stripe_index=$($LFS getstripe -m $testdir)
local test_mkdir_rr=true
- getfattr -d -m dmv $testdir | grep dmv
- if [ $? -eq 0 ] && [ $MDS1_VERSION -ge $(version_code 2.14.51) ]; then
- local inherit_rr=$($LFS getdirstripe -D --max-inherit-rr $testdir)
-
- (( $inherit_rr == 0 )) && test_mkdir_rr=false
+ echo "dirstripe: '$($LFS getdirstripe $testdir)'"
+ getfattr -d -m dmv -e hex $testdir | grep dmv
+ if (( $? == 0 && $MDS1_VERSION >= $(version_code 2.14.51) )); then
+ echo "defstripe: '$($LFS getdirstripe -D $testdir)'"
+ (( $($LFS getdirstripe -D --max-inherit-rr $testdir) == 0 )) &&
+ test_mkdir_rr=false
fi
echo
echo "Mkdir (stripe_count $stripe_count) roundrobin:" ||
echo "Mkdir (stripe_count $stripe_count) on stripe $stripe_index"
- for i in $(seq $((100 * MDSCOUNT))); do
+ stack_trap "unlinkmany -d $testdir/subdir $((100 * MDSCOUNT))"
+ for (( i = 0; i < 100 * MDSCOUNT; i++ )); do
eval $mkdir_cmd $testdir/subdir$i ||
error "$mkdir_cmd subdir$i failed"
done
- for i in $(seq $MDSCOUNT); do
- count=$($LFS getdirstripe -i $testdir/* |
- grep ^$((i - 1))$ | wc -l)
- echo "$count directories created on MDT$((i - 1))"
+ for (( i = 0; i < $MDSCOUNT; i++ )); do
+ count=$($LFS getdirstripe -i $testdir/* | grep -c "^$i$")
+ echo "$count directories created on MDT$i"
if $test_mkdir_rr; then
(( $count == 100 )) ||
error "subdirs are not evenly distributed"
- elif [ $((i - 1)) -eq $stripe_index ]; then
+ elif (( $i == $stripe_index )); then
(( $count == 100 * MDSCOUNT )) ||
- error "$count subdirs created on MDT$((i - 1))"
+ error "$count subdirs created on MDT$i"
else
(( $count == 0 )) ||
- error "$count subdirs created on MDT$((i - 1))"
+ error "$count subdirs created on MDT$i"
fi
if $test_mkdir_rr && [ $stripe_count -gt 1 ]; then
count=$($LFS getdirstripe $testdir/* |
- grep -P "^\s+$((i - 1))\t" | wc -l)
- echo "$count stripes created on MDT$((i - 1))"
+ grep -c -P "^\s+$i\t")
+ echo "$count stripes created on MDT$i"
# deviation should < 5% of average
- (( $count < 95 * stripe_count )) ||
- (( $count > 105 * stripe_count)) &&
+ (( $count >= 95 * stripe_count &&
+ $count <= 105 * stripe_count)) ||
error "stripes are not evenly distributed"
fi
done
- $LCTL set_param lmv.*.qos_threshold_rr=$lmv_qos_threshold_rr > /dev/null
- do_nodes $mdts $LCTL set_param \
- lod.*.mdt_qos_threshold_rr=$lod_qos_threshold_rr > /dev/null
-
echo
echo "Check for uneven MDTs: "
fi
done
- (( ${ffree[min_index]} == 0 )) &&
+ (( ${ffree[min_index]} > 0 )) ||
skip "no free files in MDT$min_index"
- (( ${ffree[min_index]} > 100000000 )) &&
+ (( ${ffree[min_index]} < 100000000 )) ||
skip "too many free files in MDT$min_index"
- # Check if we need to generate uneven MDTs
- local threshold=50
- local diff=$(((max - min) * 100 / min))
- local value="$(generate_string 1024)"
-
- while [ $diff -lt $threshold ]; do
- # generate uneven MDTs, create till $threshold% diff
- echo -n "weight diff=$diff% must be > $threshold% ..."
- count=$((${ffree[min_index]} / 10))
- # 50 sec per 10000 files in vm
- (( $count < 100000 )) || [ "$SLOW" != "no" ] ||
- skip "$count files to create"
- echo "Fill MDT$min_index with $count files"
- [ -d $DIR/$tdir-MDT$min_index ] ||
- $LFS mkdir -i $min_index $DIR/$tdir-MDT$min_index ||
- error "mkdir $tdir-MDT$min_index failed"
- createmany -d $DIR/$tdir-MDT$min_index/d $count ||
- error "create d$count failed"
-
- ffree=($(lctl get_param -n mdc.*[mM][dD][cC]-*.filesfree))
- bavail=($(lctl get_param -n mdc.*[mM][dD][cC]-*.kbytesavail))
- max=$(((${ffree[max_index]} >> 8) * \
- (${bavail[max_index]} * bsize >> 16)))
- min=$(((${ffree[min_index]} >> 8) * \
- (${bavail[min_index]} * bsize >> 16)))
- diff=$(((max - min) * 100 / min))
- done
-
echo "MDT filesfree available: ${ffree[@]}"
echo "MDT blocks available: ${bavail[@]}"
- echo "weight diff=$diff%"
-
+ echo "weight diff=$(((max - min) * 100 / min))%"
echo
echo "Mkdir (stripe_count $stripe_count) with balanced space usage:"
+ $LCTL set_param lmv.*.qos_threshold_rr=0 > /dev/null
$LCTL set_param lmv.*.qos_prio_free=100 > /dev/null
+ do_nodes $mdts $LCTL set_param lod.*.mdt_qos_threshold_rr=0 > /dev/null
do_nodes $mdts $LCTL set_param lod.*.mdt_qos_prio_free=100 > /dev/null
# decrease statfs age, so that it can be updated in time
$LCTL set_param lmv.*.qos_maxage=1 > /dev/null
sleep 1
testdir=$DIR/$tdir-s$stripe_count/qos
+ local num=200
- for i in $(seq $((100 * MDSCOUNT))); do
+ stack_trap "unlinkmany -d $testdir/subdir $((num * MDSCOUNT))"
+ for (( i = 0; i < num * MDSCOUNT; i++ )); do
eval $mkdir_cmd $testdir/subdir$i ||
error "$mkdir_cmd subdir$i failed"
done
- for i in $(seq $MDSCOUNT); do
- count=$($LFS getdirstripe -i $testdir/* | grep ^$((i - 1))$ |
- wc -l)
- echo "$count directories created on MDT$((i - 1))"
+ for (( i = 0; i < $MDSCOUNT; i++ )); do
+ count=$($LFS getdirstripe -i $testdir/* | grep -c "^$i$")
+ echo "$count directories created on MDT$i"
if [ $stripe_count -gt 1 ]; then
count=$($LFS getdirstripe $testdir/* |
- grep -P "^\s+$((i - 1))\t" | wc -l)
- echo "$count stripes created on MDT$((i - 1))"
+ grep -c -P "^\s+$i\t")
+ echo "$count stripes created on MDT$i"
fi
done
- max=$($LFS getdirstripe -i $testdir/* | grep ^$max_index$ | wc -l)
- min=$($LFS getdirstripe -i $testdir/* | grep ^$min_index$ | wc -l)
+ max=$($LFS getdirstripe -i $testdir/* | grep -c "^$max_index$")
+ min=$($LFS getdirstripe -i $testdir/* | grep -c "^$min_index$")
# D-value should > 10% of averge
- (( $max - $min < 10 )) &&
- error "subdirs shouldn't be evenly distributed"
+ (( max - min >= num / 10 )) ||
+ error "subdirs shouldn't be evenly distributed: $max - $min < $((num / 10))"
- # ditto
- if [ $stripe_count -gt 1 ]; then
+ # 5% for stripes
+ if (( stripe_count > 1 )); then
max=$($LFS getdirstripe $testdir/* |
- grep -P "^\s+$max_index\t" | wc -l)
+ grep -c -P "^\s+$max_index\t")
min=$($LFS getdirstripe $testdir/* |
- grep -P "^\s+$min_index\t" | wc -l)
- (( $max - $min < 10 * $stripe_count )) &&
- error "stripes shouldn't be evenly distributed"|| true
+ grep -c -P "^\s+$min_index\t")
+ (( max - min >= num * stripe_count / 20 )) ||
+ error "stripes shouldn't be evenly distributed: $max - $min < $((num / 20)) * $stripe_count"
fi
}
+most_full_mdt() {
+ local ffree
+ local bavail
+ local bsize
+ local min
+ local min_index
+ local tmp
+
+ ffree=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.filesfree))
+ bavail=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.kbytesavail))
+ bsize=$(lctl get_param -n mdc.*MDT0000*.blocksize)
+
+ min=$(((${ffree[0]} >> 8) * (${bavail[0]} * bsize >> 16)))
+ min_index=0
+ for ((i = 1; i < ${#ffree[@]}; i++)); do
+ tmp=$(((${ffree[i]} >> 8) * (${bavail[i]} * bsize >> 16)))
+ (( tmp < min )) && min=$tmp && min_index=$i
+ done
+
+ echo -n $min_index
+}
+
test_413a() {
[ $MDSCOUNT -lt 2 ] &&
skip "We need at least 2 MDTs for this test"
local stripe_count
+ generate_uneven_mdts 100
for stripe_count in $(seq 1 $((MDSCOUNT - 1))); do
mkdir $DIR/$tdir-s$stripe_count || error "mkdir failed"
mkdir $DIR/$tdir-s$stripe_count/rr || error "mkdir failed"
- mkdir $DIR/$tdir-s$stripe_count/qos || error "mkdir failed"
- test_qos_mkdir "$LFS mkdir -c $stripe_count" $stripe_count
+ $LFS mkdir -i $(most_full_mdt) $DIR/$tdir-s$stripe_count/qos ||
+ error "mkdir failed"
+ test_qos_mkdir "$LFS mkdir -i -1 -c $stripe_count" $stripe_count
done
}
run_test 413a "QoS mkdir with 'lfs mkdir -i -1'"
local testdir
local stripe_count
+ generate_uneven_mdts 100
for stripe_count in $(seq 1 $((MDSCOUNT - 1))); do
testdir=$DIR/$tdir-s$stripe_count
mkdir $testdir || error "mkdir $testdir failed"
mkdir $testdir/rr || error "mkdir rr failed"
- mkdir $testdir/qos || error "mkdir qos failed"
+ $LFS mkdir -i $(most_full_mdt) $testdir/qos ||
+ error "mkdir qos failed"
$LFS setdirstripe -D -c $stripe_count --max-inherit-rr 2 \
$testdir/rr || error "setdirstripe rr failed"
$LFS setdirstripe -D -c $stripe_count $testdir/qos ||
run_test 413b "QoS mkdir under dir whose default LMV starting MDT offset is -1"
test_413c() {
- [ $MDSCOUNT -ge 2 ] ||
+ (( $MDSCOUNT >= 2 )) ||
skip "We need at least 2 MDTs for this test"
- [ $MDS1_VERSION -ge $(version_code 2.14.51) ] ||
- skip "Need server version at least 2.14.50"
+ (( $MDS1_VERSION >= $(version_code 2.14.51) )) ||
+ skip "Need server version at least 2.14.51"
local testdir
local inherit
testdir=$DIR/${tdir}-s1
mkdir $testdir || error "mkdir $testdir failed"
mkdir $testdir/rr || error "mkdir rr failed"
- mkdir $testdir/qos || error "mkdir qos failed"
+ $LFS mkdir -i $(most_full_mdt) $testdir/qos || error "mkdir qos failed"
# default max_inherit is -1, default max_inherit_rr is 0
$LFS setdirstripe -D -c 1 $testdir/rr ||
error "setdirstripe rr failed"
- $LFS setdirstripe -D -c 1 -X 2 --max-inherit-rr 1 $testdir/qos ||
+ $LFS setdirstripe -D -c 1 -i -1 -X 2 --max-inherit-rr 1 $testdir/qos ||
error "setdirstripe qos failed"
test_qos_mkdir "mkdir" 1
inherit=$($LFS getdirstripe -D -X $testdir/rr/level1)
(( $inherit == -1 )) || error "rr/level1 inherit $inherit != -1"
inherit_rr=$($LFS getdirstripe -D --max-inherit-rr $testdir/rr/level1)
- (( $inherit_rr == 0 )) ||
- error "rr/level1 inherit-rr $inherit_rr != 0"
+ (( $inherit_rr == 0 )) || error "rr/level1 inherit-rr $inherit_rr != 0"
mkdir $testdir/qos/level1 || error "mkdir qos/level1 failed"
inherit=$($LFS getdirstripe -D -X $testdir/qos/level1)
(( $inherit == 1 )) || error "qos/level1 inherit $inherit != 1"
inherit_rr=$($LFS getdirstripe -D --max-inherit-rr $testdir/qos/level1)
- (( $inherit_rr == 0 )) ||
- error "qos/level1 inherit-rr $inherit_rr !=0"
+ (( $inherit_rr == 0 )) || error "qos/level1 inherit-rr $inherit_rr != 0"
mkdir $testdir/qos/level1/level2 || error "mkdir level2 failed"
- getfattr -d -m dmv $testdir/qos/level1/level2 | grep dmv &&
+ getfattr -d -m dmv -e hex $testdir/qos/level1/level2 | grep dmv &&
error "level2 shouldn't have default LMV" || true
}
run_test 413c "mkdir with default LMV max inherit rr"
+test_413z() {
+ local pids=""
+ local subdir
+ local pid
+
+ for subdir in $(\ls -1 -d $DIR/d413*-fillmdt/*); do
+ unlinkmany $subdir/f. 100 &
+ pids="$pids $!"
+ done
+
+ for pid in $pids; do
+ wait $pid
+ done
+}
+run_test 413z "413 test cleanup"
+
test_414() {
#define OBD_FAIL_PTLRPC_BULK_ATTACH 0x521
$LCTL set_param fail_loc=0x80000521
}
run_test 431 "Restart transaction for IO"
+cleanup_test_432() {
+ do_facet mgs $LCTL nodemap_activate 0
+ wait_nm_sync active
+}
+
+test_432() {
+ local tmpdir=$TMP/dir432
+
+ (( $MDS1_VERSION >= $(version_code 2.14.52) )) ||
+ skip "Need MDS version at least 2.14.52"
+
+ stack_trap cleanup_test_432 EXIT
+ mkdir $DIR/$tdir
+ mkdir $tmpdir
+
+ do_facet mgs $LCTL nodemap_activate 1
+ wait_nm_sync active
+ do_facet mgs $LCTL nodemap_modify --name default \
+ --property admin --value 1
+ do_facet mgs $LCTL nodemap_modify --name default \
+ --property trusted --value 1
+ cancel_lru_locks mdc
+ wait_nm_sync default admin_nodemap
+ wait_nm_sync default trusted_nodemap
+
+ if [ $(mv $tmpdir $DIR/$tdir/ 2>&1 |
+ grep -ci "Operation not permitted") -ne 0 ]; then
+ error "mv $tmpdir $DIR/$tdir/ hits 'Operation not permitted'"
+ fi
+}
+run_test 432 "mv dir from outside Lustre"
+
prep_801() {
[[ $MDS1_VERSION -lt $(version_code 2.9.55) ]] ||
[[ $OST1_VERSION -lt $(version_code 2.9.55) ]] &&