[[ $MDS1_VERSION -gt $(version_code 2.12.58) ]] ||
skip "MDS < 2.12.58 doesn't return LSOM data"
local dir=$DIR/$tdir
+ local old_agl=$($LCTL get_param -n llite.*.statahead_agl)
- [[ $OSC == "mdc" ]] && skip "DoM files" && return
+ [[ $OSC == "mdc" ]] && skip "statahead not needed for DoM files"
+
+ # statahead_agl may cause extra glimpse which confuses results. LU-13017
+ $LCTL set_param -n llite.*.statahead_agl=0
+ stack_trap "$LCTL set_param -n llite.*.statahead_agl=$old_agl"
setup_56 $dir $NUMFILES $NUMDIRS "-c 1"
# open and close all files to ensure LSOM is updated
sed -n '/pages per rpc/,/^$/p' |
awk '/'$pages':/ { reads += $2; writes += $6 }; \
END { print reads,writes }'))
- [ ${rpcs[0]} -ne $count ] && error "${rpcs[0]} != $count read RPCs" &&
- return 5
- [ ${rpcs[1]} -ne $count ] && error "${rpcs[1]} != $count write RPCs" &&
- return 6
-
- return 0
+ # allow one extra full-sized read RPC for async readahead
+ [[ ${rpcs[0]} == $count || ${rpcs[0]} == $((count + 1)) ]] ||
+ { error "${rpcs[0]} != $count read RPCs"; return 5; }
+ [[ ${rpcs[1]} == $count ]] ||
+ { error "${rpcs[1]} != $count write RPCs"; return 6; }
}
test_101g() {
skip "Limit is too small $LIMIT"
fi
- # Make LVF so higher that sleeping for $SLEEP is enough to _start_
- # killing locks. Some time was spent for creating locks. This means
- # that up to the moment of sleep finish we must have killed some of
- # them (10-100 locks). This depends on how fast ther were created.
- # Many of them were touched in almost the same moment and thus will
- # be killed in groups.
- local LVF=$(($MAX_HRS * 60 * 60 / $SLEEP * $LIMIT / $LRU_SIZE))
-
- # Use $LRU_SIZE_B here to take into account real number of locks
- # created in the case of CMD, LRU_SIZE_B != $NR in most of cases
- local LRU_SIZE_B=$LRU_SIZE
- log "LVF=$LVF"
+ # Make LVF so higher that sleeping for $SLEEP is enough to _start_
+ # killing locks. Some time was spent for creating locks. This means
+ # that up to the moment of sleep finish we must have killed some of
+ # them (10-100 locks). This depends on how fast ther were created.
+ # Many of them were touched in almost the same moment and thus will
+ # be killed in groups.
+ local LVF=$(($MAX_HRS * 60 * 60 / $SLEEP * $LIMIT / $LRU_SIZE * 100))
+
+ # Use $LRU_SIZE_B here to take into account real number of locks
+ # created in the case of CMD, LRU_SIZE_B != $NR in most of cases
+ local LRU_SIZE_B=$LRU_SIZE
+ log "LVF=$LVF"
local OLD_LVF=$($LCTL get_param -n $NSDIR.pool.lock_volume_factor)
log "OLD_LVF=$OLD_LVF"
$LCTL set_param -n $NSDIR.pool.lock_volume_factor $LVF
error "Unexpected jobids when jobid_var=$JOBENV"
fi
- lctl set_param jobid_var=USER jobid_name="S.%j.%e.%u.%h.E"
- JOBENV="JOBCOMPLEX"
- JOBCOMPLEX="S.$USER.touch.$(id -u).$(hostname).E"
+ # test '%j' access to environment variable - if supported
+ if lctl set_param jobid_var=USER jobid_name="S.%j.%e.%u.%h.E"; then
+ JOBENV="JOBCOMPLEX"
+ JOBCOMPLEX="S.$USER.touch.$(id -u).$(hostname).E"
+
+ verify_jobstats "touch $DIR/$tfile" $SINGLEMDS
+ fi
- verify_jobstats "touch $DIR/$tfile" $SINGLEMDS
+ # test '%j' access to per-session jobid - if supported
+ if lctl list_param jobid_this_session > /dev/null 2>&1
+ then
+ lctl set_param jobid_var=session jobid_name="S.%j.%e.%u.%h.E"
+ lctl set_param jobid_this_session=$USER
+
+ JOBENV="JOBCOMPLEX"
+ JOBCOMPLEX="S.$USER.touch.$(id -u).$(hostname).E"
+
+ verify_jobstats "touch $DIR/$tfile" $SINGLEMDS
+ fi
}
run_test 205a "Verify job stats"
test_205b() {
job_stats="mdt.*.job_stats"
$LCTL set_param $job_stats=clear
- $LCTL set_param jobid_var=USER jobid_name="%e.%u"
+ # Setting jobid_var to USER might not be supported
+ $LCTL set_param jobid_var=USER || true
+ $LCTL set_param jobid_name="%e.%u"
env -i USERTESTJOBSTATS=foolish touch $DIR/$tfile.1
do_facet $SINGLEMDS $LCTL get_param $job_stats |
grep "job_id:.*foolish" &&
return 0
lowest_speedup=$(bc <<<"scale=2; $average_cache / 2")
- [ ${average_ladvise%.*} -gt $lowest_speedup ] ||
+ [[ ${average_ladvise%.*} > $lowest_speedup ]] ||
error_not_in_vm "Speedup with willread is less than " \
"$lowest_speedup%, got $average_ladvise%"
}
run_test 401a "Verify if 'lctl list_param -R' can list parameters recursively"
test_401b() {
- local save=$($LCTL get_param -n jobid_var)
- local tmp=testing
+ # jobid_var may not allow arbitrary values, so use jobid_name
+ # if available
+ if $LCTL list_param jobid_name > /dev/null 2>&1; then
+ local testname=jobid_name tmp='testing%p'
+ else
+ local testname=jobid_var tmp=testing
+ fi
+
+ local save=$($LCTL get_param -n $testname)
- $LCTL set_param foo=bar jobid_var=$tmp bar=baz &&
+ $LCTL set_param foo=bar $testname=$tmp bar=baz &&
error "no error returned when setting bad parameters"
- local jobid_new=$($LCTL get_param -n foe jobid_var baz)
+ local jobid_new=$($LCTL get_param -n foe $testname baz)
[[ "$jobid_new" == "$tmp" ]] || error "jobid tmp $jobid_new != $tmp"
- $LCTL set_param -n fog=bam jobid_var=$save bat=fog
- local jobid_old=$($LCTL get_param -n foe jobid_var bag)
+ $LCTL set_param -n fog=bam $testname=$save bat=fog
+ local jobid_old=$($LCTL get_param -n foe $testname bag)
[[ "$jobid_old" == "$save" ]] || error "jobid new $jobid_old != $save"
}
run_test 401b "Verify 'lctl {get,set}_param' continue after error"
test_401c() {
- local jobid_var_old=$($LCTL get_param -n jobid_var)
+ # jobid_var may not allow arbitrary values, so use jobid_name
+ # if available
+ if $LCTL list_param jobid_name > /dev/null 2>&1; then
+ local testname=jobid_name
+ else
+ local testname=jobid_var
+ fi
+
+ local jobid_var_old=$($LCTL get_param -n $testname)
local jobid_var_new
- $LCTL set_param jobid_var= &&
+ $LCTL set_param $testname= &&
error "no error returned for 'set_param a='"
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_old" == "$jobid_var_new" ]] ||
- error "jobid_var was changed by setting without value"
+ error "$testname was changed by setting without value"
- $LCTL set_param jobid_var &&
+ $LCTL set_param $testname &&
error "no error returned for 'set_param a'"
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_old" == "$jobid_var_new" ]] ||
- error "jobid_var was changed by setting without value"
+ error "$testname was changed by setting without value"
}
run_test 401c "Verify 'lctl set_param' without value fails in either format."
test_401d() {
- local jobid_var_old=$($LCTL get_param -n jobid_var)
+ # jobid_var may not allow arbitrary values, so use jobid_name
+ # if available
+ if $LCTL list_param jobid_name > /dev/null 2>&1; then
+ local testname=jobid_name new_value='foo=bar%p'
+ else
+ local testname=jobid_var new_valuie=foo=bar
+ fi
+
+ local jobid_var_old=$($LCTL get_param -n $testname)
local jobid_var_new
- local new_value="foo=bar"
- $LCTL set_param jobid_var=$new_value ||
+ $LCTL set_param $testname=$new_value ||
error "'set_param a=b' did not accept a value containing '='"
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_new" == "$new_value" ]] ||
error "'set_param a=b' failed on a value containing '='"
- # Reset the jobid_var to test the other format
- $LCTL set_param jobid_var=$jobid_var_old
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ # Reset the $testname to test the other format
+ $LCTL set_param $testname=$jobid_var_old
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_new" == "$jobid_var_old" ]] ||
- error "failed to reset jobid_var"
+ error "failed to reset $testname"
- $LCTL set_param jobid_var $new_value ||
+ $LCTL set_param $testname $new_value ||
error "'set_param a b' did not accept a value containing '='"
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_new" == "$new_value" ]] ||
error "'set_param a b' failed on a value containing '='"
- $LCTL set_param jobid_var $jobid_var_old
- jobid_var_new=$($LCTL get_param -n jobid_var)
+ $LCTL set_param $testname $jobid_var_old
+ jobid_var_new=$($LCTL get_param -n $testname)
[[ "$jobid_var_new" == "$jobid_var_old" ]] ||
- error "failed to reset jobid_var"
+ error "failed to reset $testname"
}
run_test 401d "Verify 'lctl set_param' accepts values containing '='"