run_test 11 "execution of file opened for write should return error ===="
test_12() {
- DIR=$DIR DIR2=$DIR2 sh lockorder.sh
+ DIR=$DIR DIR2=$DIR2 bash lockorder.sh
}
run_test 12 "test lock ordering (link, stat, unlink)"
test_15() { # bug 974 - ENOSPC
echo "PATH=$PATH"
- sh oos2.sh $MOUNT1 $MOUNT2
+ bash oos2.sh $MOUNT1 $MOUNT2
wait_delete_completed
grant_error=$(dmesg | grep "< tot_grant")
[ -z "$grant_error" ] || error "$grant_error"
test_30() { #b=11110, LU-2523
test_mkdir $DIR1/$tdir
cp -f /bin/bash $DIR1/$tdir/bash
- /bin/sh -c 'sleep 1; rm -f $DIR2/$tdir/bash; cp /bin/bash $DIR2/$tdir' &
+ bash -c 'sleep 1; rm -f $DIR2/$tdir/bash; cp /bin/bash $DIR2/$tdir' &
$DIR1/$tdir/bash -c 'sleep 2;
openfile -f O_RDONLY /proc/$$/exe >& /dev/null; echo $?'
wait
#run_test 32b "lockless i/o"
print_jbd_stat () {
- local dev
- local mdts=$(get_facets MDS)
- local varcvs
- local mds
-
- local stat=0
- for mds in ${mdts//,/ }; do
- varsvc=${mds}_svc
- dev=$(basename $(do_facet $mds "lctl get_param -n osd*.${!varsvc}.mntdev|\
- xargs readlink -f" ))
- val=$(do_facet $mds "cat /proc/fs/jbd*/${dev}{,:*,-*}/info 2>/dev/null |
- head -n1")
- val=${val%% *};
- stat=$(( stat + val))
- done
- echo $stat
+ local mdts=$(get_facets MDS)
+ local stat=0
+ local varsvc
+ local dev
+ local mds
+
+ for mds in ${mdts//,/ }; do
+ varsvc=${mds}_svc
+
+ dev=$(basename $(do_facet $mds "lctl get_param -n \
+ osd*.${!varsvc}.mntdev | xargs readlink -f"))
+ val=$(do_facet $mds "cat /proc/fs/jbd*/${dev}{,:*,-*}/info \
+ 2>/dev/null | head -n1")
+ val=${val%% *};
+ stat=$((stat + val))
+ done
+ echo $stat
}
# commit on sharing tests
# trigger CoS twice in case transaction commit before unlock
for i in 1 2; do
- sh -c "$1"
+ bash -c "$1"
do_nodes $nodes "lctl set_param -n mdt.*.async_commit_count=0"
- sh -c "$2"
+ bash -c "$2"
commit_nr=$(do_nodes $nodes \
"lctl get_param -n mdt.*.async_commit_count" | calc_sum)
total=$((total + commit_nr));
}
run_test 77q "Parallel TBF rule definitions should not panic"
+test_77p() {
+ local c
+ local -a spec_chars=(
+ '@' '.' '~' '#' '/' '^' '%' '*' ';' ',' '?' '<' '>' ':'
+ '+' '=' ')' '(' '{' '}' '|' '[' ']' '!' '&' '\$' '\`' '\\')
+
+ (( $MDS1_VERSION > $(version_code 2.14.54) )) ||
+ skip "need MDS >= 2.14.54"
+
+ do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_policies="tbf"
+ stack_trap "do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_policies=fifo"
+
+ # TBF rule name size is 16 bytes
+ do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_tbf_rule="start\ test_77p_overflo\ uid={500}\ rate=500" &&
+ error "The length of tbf rule name is not checked" || true
+ do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_tbf_rule="start\ \ uid={500}\ rate=500" &&
+ error "The server should not accept empty tbf rule name" || true
+ do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_tbf_rule="start\ test_77p_empty" &&
+ error "The server should not accept 'start <tbf_rule_name>' without an expression" || true
+
+ # Test with special chars
+ for c in "${spec_chars[@]}"; do
+ do_facet mds1 $LCTL set_param mds.MDS.mdt.nrs_tbf_rule="'start test77p${c}spec uid={500} rate=500'" &&
+ error "Special char '${c}' should not be accepted in a tbf rule name" || true
+ done
+
+}
+run_test 77p "Check validity of rule names for TBF policies"
+
test_78() { #LU-6673
local rc