}
run_test 64g "grant shrink on MDT"
+test_64h() {
+ local instance=$($LFS getname -i $DIR)
+ local osc_tgt="$FSNAME-OST0000-osc-$instance"
+ local num_exps=$(do_facet ost1 \
+ $LCTL get_param -n obdfilter.*OST0000*.num_exports)
+ local max_brw_size=$(import_param $osc_tgt max_brw_size)
+ local avail=$($LCTL get_param -n osc.*OST0000-osc-$instance.kbytesavail)
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+
+ # 10MiB is for file to be written, max_brw_size * 16 *
+ # num_exps is space reserve so that tgt_grant_shrink() decided
+ # to not shrink
+ local expect=$((max_brw_size * 16 * num_exps + 10 * 1048576))
+ (( avail * 1024 < expect )) &&
+ skip "need $expect bytes on ost1, have $(( avail * 1024 )) only"
+
+ save_lustre_params client "osc.*OST0000*.grant_shrink" > $p
+ save_lustre_params client "osc.*OST0000*.grant_shrink_interval" >> $p
+ stack_trap "restore_lustre_params < $p; rm -f $save" EXIT
+ $LCTL set_param osc.*OST0000*.grant_shrink=1
+ $LCTL set_param osc.*OST0000*.grant_shrink_interval=10
+
+ $LFS setstripe -c 1 -i 0 $DIR/$tfile
+ dd if=/dev/zero of=$DIR/$tfile bs=1M count=10 oflag=sync
+
+ # drop cache so that coming read would do rpc
+ cancel_lru_locks osc
+
+ # shrink interval is set to 10, pause for 7 seconds so that
+ # grant thread did not wake up yet but coming read entered
+ # shrink mode for rpc (osc_should_shrink_grant())
+ sleep 7
+
+ declare -a cur_grant_bytes
+ declare -a tot_granted
+ cur_grant_bytes[0]=$($LCTL get_param -n osc.*OST0000*.cur_grant_bytes)
+ tot_granted[0]=$(do_facet ost1 \
+ $LCTL get_param -n obdfilter.*OST0000*.tot_granted)
+
+ dd if=$DIR/$tfile bs=4K count=1 of=/dev/null
+
+ cur_grant_bytes[1]=$($LCTL get_param -n osc.*OST0000*.cur_grant_bytes)
+ tot_granted[1]=$(do_facet ost1 \
+ $LCTL get_param -n obdfilter.*OST0000*.tot_granted)
+
+ # grant change should be equal on both sides
+ (( cur_grant_bytes[0] - cur_grant_bytes[1] ==
+ tot_granted[0] - tot_granted[1])) ||
+ error "grant change mismatch, " \
+ "server: ${tot_granted[0]} to ${tot_granted[1]}, " \
+ "client: ${cur_grant_bytes[0]} to ${cur_grant_bytes[1]}"
+}
+run_test 64h "grant shrink on read"
+
# bug 1414 - set/get directories' stripe info
test_65a() {
[ $PARALLEL == "yes" ] && skip "skip parallel run"
error "migrate remote dir error"
echo "Finish migration, then checking.."
- for file in $(find $migrate_dir); do
+ for file in $(find $migrate_dir -maxdepth 1); do
mdt_index=$($LFS getstripe -m $file)
if [ $mdt_index -lt $new_index ] ||
[ $mdt_index -gt $((new_index + new_count - 1)) ]; then
}
run_test 230t "migrate directory with project ID set"
+test_230u()
+{
+ (( MDSCOUNT > 3 )) || skip_env "needs >= 4 MDTs"
+ (( MDS1_VERSION >= $(version_code 2.14.53) )) ||
+ skip "Need MDS version at least 2.14.53"
+
+ local count
+
+ mkdir_on_mdt0 $DIR/$tdir || error "mkdir $tdir failed"
+ mkdir $DIR/$tdir/sub{0..99} || error "mkdir sub failed"
+ $LFS migrate -m -1 $DIR/$tdir/sub{0..99} || error "migrate sub failed"
+ for i in $(seq 0 $((MDSCOUNT - 1))); do
+ count=$($LFS getstripe -m $DIR/$tdir/sub* | grep -c ^$i)
+ echo "$count dirs migrated to MDT$i"
+ done
+ count=$($LFS getstripe -m $DIR/$tdir/sub* | sort -u | wc -l)
+ (( count >= MDSCOUNT - 1 )) || error "dirs migrated to $count MDTs"
+}
+run_test 230u "migrate directory by QOS"
+
+test_230v()
+{
+ (( MDSCOUNT > 3 )) || skip_env "needs >= 4 MDTs"
+ (( MDS1_VERSION >= $(version_code 2.14.53) )) ||
+ skip "Need MDS version at least 2.14.53"
+
+ local count
+
+ mkdir $DIR/$tdir || error "mkdir $tdir failed"
+ mkdir $DIR/$tdir/sub{0..99} || error "mkdir sub failed"
+ $LFS migrate -m 0,2,1 $DIR/$tdir || error "migrate $tdir failed"
+ for i in $(seq 0 $((MDSCOUNT - 1))); do
+ count=$($LFS getstripe -m $DIR/$tdir/sub* | grep -c ^$i)
+ echo "$count subdirs migrated to MDT$i"
+ (( i == 3 )) && (( count > 0 )) &&
+ error "subdir shouldn't be migrated to MDT3"
+ done
+ count=$($LFS getstripe -m $DIR/$tdir/sub* | sort -u | wc -l)
+ (( count == 3 )) || error "dirs migrated to $count MDTs"
+}
+run_test 230v "subdir migrated to the MDT where its parent is located"
+
test_231a()
{
# For simplicity this test assumes that max_pages_per_rpc
}
run_test 270h "DoM: DoM stripe removal when disabled on server"
+test_270i() {
+ (( $MDS1_VERSION >= $(version_code 2.14.54) )) ||
+ skip "Need MDS version at least 2.14.54"
+
+ mkdir $DIR/$tdir
+ $LFS setstripe -L mdt -S 128k -c -1 $DIR/$tdir &&
+ error "setstripe should fail" || true
+}
+run_test 270i "DoM: setting invalid DoM striping should fail"
+
test_271a() {
[ $MDS1_VERSION -lt $(version_code 2.10.55) ] &&
skip "Need MDS version at least 2.10.55"
[ "$1" == "blocks" ] && inodes= || inodes="-i"
for count in {1..100}; do
- do_rpc_nodes "$CLIENTS" cancel_lru_locks
+ do_nodes "$CLIENTS" \
+ $LCTL set_param ldlm.namespaces.*.lru_size=clear
sync; sleep 0.2
# read the lines of interest
# "<NID>:/<fsname>" for df, "filesystem_summary:" for lfs df
# compare the two outputs
passed=true
- for i in {1..5}; do
+ # skip "available" on MDT until LU-13997 is fixed.
+ #for i in {1..5}; do
+ for i in 1 2 4 5; do
[ "${df_out[i]}" != "${lfs_df_out[i]}" ] && passed=false
done
$passed && break