chmod 777 $dir
do_nodes $CLIENTS $myRUNAS dd if=/dev/zero of="$dir/nrs_r_$HOSTNAME"\
- bs=1M count=$n > /dev/null 2>&1
+ bs=1M count=$n > /dev/null 2>&1 || error "dd on client failed"
for ((i = 0; i < $n; i++)); do
do_nodes $CLIENTS $myRUNAS dd if=/dev/zero\
of="$dir/nrs_w_$HOSTNAME" bs=1M seek=$i count=1\
- > /dev/null 2>&1 &
+ > /dev/null 2>&1 || error "dd on client failed" &
local pids_w[$i]=$!
done
do_nodes $CLIENTS sync;
for ((i = 0; i < $n; i++)); do
do_nodes $CLIENTS $myRUNAS dd if="$dir/nrs_w_$HOSTNAME"\
- of=/dev/zero bs=1M seek=$i count=1 > /dev/null 2>&1 &
+ of=/dev/zero bs=1M seek=$i count=1 > /dev/null 2>&1 ||
+ error "dd on client failed"
local pids_r[$i]=$!
done
cancel_lru_locks osc
}
test_77a() { #LU-3266
- do_facet $SINGLEMDS lctl set_param ost.OSS.*.nrs_policies="fifo"
+ oss=$(comma_list $(osts_nodes))
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_policies="fifo"
nrs_write_read
return 0
}
run_test 77a "check FIFO NRS policy"
-
test_77b() { #LU-3266
- do_facet $SINGLEMDS lctl set_param ost.OSS.*.nrs_policies="crrn"
- do_facet $SINGLEMDS lctl set_param ost.OSS.*.nrs_crrn_quantum=1
+ oss=$(comma_list $(osts_nodes))
+
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_policies="crrn" \
+ ost.OSS.*.nrs_crrn_quantum=1
echo "policy: crr-n, crrn_quantum 1"
nrs_write_read
- do_facet $SINGLEMDS lctl set_param ost.OSS.*.nrs_crrn_quantum=64
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_crrn_quantum=64
echo "policy: crr-n, crrn_quantum 64"
nrs_write_read
+ # cleanup
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
return 0
}
run_test 77b "check CRR-N NRS policy"
orr_trr() {
local policy=$1
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies=$policy
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_"$policy"_quantum=1
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_"$policy"_offset_type="physical"
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_"$policy"_supported="reads"
- done
+ oss=$(comma_list $(osts_nodes))
+
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies=$policy \
+ ost.OSS.*.nrs_"$policy"_quantum=1 \
+ ost.OSS.*.nrs_"$policy"_offset_type="physical" \
+ ost.OSS.*.nrs_"$policy"_supported="reads"
- echo "policy: $policy, ${policy}_quantum 1, ${policy}_offset_type \
- physical, ${policy}_supported reads"
+ echo "policy: $policy, ${policy}_quantum 1, ${policy}_offset_type physical, ${policy}_supported reads"
nrs_write_read
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_${policy}_supported="writes"
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_${policy}_quantum=64
- done
- echo "policy: $policy, ${policy}_quantum 64, \
- ${policy}_offset_type physical, ${policy}_supported writes"
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_${policy}_supported="writes" \
+ ost.OSS.*.nrs_${policy}_quantum=64
+
+ echo "policy: $policy, ${policy}_quantum 64, ${policy}_offset_type physical, ${policy}_supported writes"
nrs_write_read
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_${policy}_supported="reads_and_writes"
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_${policy}_offset_type="logical"
- done
- echo "policy: $policy, ${policy}_quantum 64, \
- ${policy}_offset_type logical, ${policy}_supported reads_and_writes"
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_${policy}_supported="reads_and_writes" \
+ ost.OSS.*.nrs_${policy}_offset_type="logical"
+ echo "policy: $policy, ${policy}_quantum 64, ${policy}_offset_type logical, ${policy}_supported reads_and_writes"
nrs_write_read
+ # cleanup
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
return 0
}
do_facet $facet lctl set_param \
ost.OSS.ost_io.nrs_tbf_rule="$*"
[ $? -ne 0 ] &&
- error "failed to operate on TBF rules"
+ error "failed to run operate '$*' on TBF rules"
}
test_77e() {
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="tbf\ nid"
- [ $? -ne 0 ] &&
- error "failed to set TBF policy"
- done
+ local server_version=$(lustre_version_code ost1)
+ [[ $server_version -ge $(version_code 2.7.58) ]] ||
+ { skip "Need server version newer than 2.7.57"; return 0; }
+
+ oss=$(comma_list $(osts_nodes))
+
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ nid"
+ [ $? -ne 0 ] && error "failed to set TBF policy"
local idis
local rateis
nrs_write_read
# Cleanup the TBF policy
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="fifo"
- [ $? -ne 0 ] &&
- error "failed to set policy back to fifo"
- done
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
+ [ $? -ne 0 ] && error "failed to set policy back to fifo"
nrs_write_read
return 0
}
run_test 77e "check TBF NID nrs policy"
test_77f() {
+ local server_version=$(lustre_version_code ost1)
+ [[ $server_version -ge $(version_code 2.7.58) ]] ||
+ { skip "Need server version newer than 2.7.57"; return 0; }
+
+ oss=$(comma_list $(osts_nodes))
+
# Configure jobid_var
local saved_jobid_var=$($LCTL get_param -n jobid_var)
if [ $saved_jobid_var != procname_uid ]; then
"$FSNAME.sys.jobid_var" procname_uid
fi
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="tbf\ jobid"
- [ $? -ne 0 ] &&
- error "failed to set TBF policy"
- done
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ jobid"
+ [ $? -ne 0 ] && error "failed to set TBF policy"
local idis
local rateis
nrs_write_read "$RUNAS"
# Cleanup the TBF policy
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="fifo"
- [ $? -ne 0 ] &&
- error "failed to set policy back to fifo"
- done
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
+ [ $? -ne 0 ] && error "failed to set policy back to fifo"
nrs_write_read "$RUNAS"
local current_jobid_var=$($LCTL get_param -n jobid_var)
run_test 77f "check TBF JobID nrs policy"
test_77g() {
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="tbf\ nid"
- [ $? -ne 0 ] &&
- error "failed to set TBF policy"
- done
+ local server_version=$(lustre_version_code ost1)
+ [[ $server_version -ge $(version_code 2.7.58) ]] ||
+ { skip "Need server version newer than 2.7.57"; return 0; }
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="tbf\ jobid"
- [ $? -ne 0 ] &&
- error "failed to set TBF policy"
- done
+ oss=$(comma_list $(osts_nodes))
+
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ nid"
+ [ $? -ne 0 ] && error "failed to set TBF policy"
+
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="tbf\ jobid"
+ [ $? -ne 0 ] && error "failed to set TBF policy"
local idis
local rateis
tbf_rule_operate ost1 "start\ dd_runas\ ${idis}{dd.$RUNAS_ID}\ ${rateis}50"
# Cleanup the TBF policy
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="fifo"
- [ $? -ne 0 ] &&
- error "failed to set policy back to fifo"
- done
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
+ [ $? -ne 0 ] && error "failed to set policy back to fifo"
return 0
}
run_test 77g "Change TBF type directly"
}
run_test 77h "Wrong policy name should report error, not LBUG"
-test_78() { #LU-6673
- local rc
-
- for i in $(seq 1 $OSTCOUNT)
- do
- do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="orr" &
- do_facet ost"$i" lctl set_param \
- ost.OSS.*.nrs_orr_quantum=1
- rc=$?
- # Valid return codes are:
- # 0: Tuning succeeded
- # ENODEV: Policy is still stopped
- # EAGAIN: Policy is being initialized
- [ $rc -eq 0 -o $rc -eq 19 -o $rc -eq 11 ] ||
- error "Expected set_param to return 0|ENODEV|EAGAIN"
+tbf_rule_check()
+{
+ local facet=$1
+ local expected=$2
+ local error_message=$3
+ local rule_number=0
+ for rule in $expected; do
+ rule_number=$((rule_number + 1))
done
+ local stop_line=$(($rule_number + 3))
+ local awk_command="awk 'NR >= 4 && NR <= $stop_line {print \$1}'"
+
+ local output=$(do_facet $facet lctl get_param \
+ ost.OSS.ost_io.nrs_tbf_rule |
+ eval $awk_command |
+ tr "\n" " " |
+ sed 's/[ ]*$//')
+ if [ "$output" != "$expected" ]; then
+ error "$error_message, expected '$expected', got '$output'"
+ fi
+}
+
+test_77i() {
+ [ $(lustre_version_code ost1) -ge $(version_code 2.8.55) ] ||
+ { skip "Need OST version at least 2.8.55"; return 0; }
- # Cleanup the ORR policy
for i in $(seq 1 $OSTCOUNT)
do
do_facet ost"$i" lctl set_param \
- ost.OSS.ost_io.nrs_policies="fifo"
+ ost.OSS.ost_io.nrs_policies="tbf\ jobid"
[ $? -ne 0 ] &&
- error "failed to set policy back to fifo"
+ error "failed to set TBF policy"
done
+
+ tbf_rule_check ost1 "default" "error before inserting any rule"
+
+ tbf_rule_operate ost1 "start\ before\ jobid={jobid}\ rate=1000"
+ tbf_rule_check ost1 "before default" \
+ "error when inserting rule 'before'"
+
+ tbf_rule_operate ost1 "start\ after\ jobid={jobid}\ rate=1000\ rank=default"
+ tbf_rule_check ost1 "before after default" \
+ "error when inserting rule 'after'"
+
+ tbf_rule_operate ost1 "start\ target\ jobid={jobid}\ rate=1000\ rank=after"
+ tbf_rule_check ost1 "before target after default" \
+ "error when inserting rule 'target'"
+
+ echo "Move before itself"
+ tbf_rule_operate ost1 "change\ target\ rank=target"
+ tbf_rule_check ost1 "before target after default" \
+ "error when moving before itself"
+
+ echo "Move to higher rank"
+ tbf_rule_operate ost1 "change\ target\ rank=before"
+ tbf_rule_check ost1 "target before after default" \
+ "error when moving to higher rank"
+
+ echo "Move to lower rank"
+ tbf_rule_operate ost1 "change\ target\ rank=after"
+ tbf_rule_check ost1 "before target after default" \
+ "error when moving to lower rank"
+
+ echo "Move before default"
+ tbf_rule_operate ost1 "change\ target\ rank=default"
+ tbf_rule_check ost1 "before after target default" \
+ error "error when moving before default"
+
+ # Cleanup the TBF policy
+ do_nodes $(comma_list $(osts_nodes)) \
+ $LCTL set_param ost.OSS.ost_io.nrs_policies=fifo
+ return 0
+}
+run_test 77i "Change rank of TBF rule"
+
+test_78() { #LU-6673
+ local rc
+
+ oss=$(comma_list $(osts_nodes))
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="orr" &
+ do_nodes $oss lctl set_param ost.OSS.*.nrs_orr_quantum=1
+ rc=$?
+ # Valid return codes are:
+ # 0: Tuning succeeded
+ # ENODEV: Policy is still stopped
+ # EAGAIN: Policy is being initialized
+ [ $rc -eq 0 -o $rc -eq 19 -o $rc -eq 11 ] ||
+ error "Expected set_param to return 0|ENODEV|EAGAIN"
+
+ # Cleanup the ORR policy
+ do_nodes $oss lctl set_param ost.OSS.ost_io.nrs_policies="fifo"
+ [ $? -ne 0 ] && error "failed to set policy back to fifo"
return 0
}
run_test 78 "Enable policy and specify tunings right away"