Skip to content
Snippets Groups Projects
Commit 4a42d2f8 authored by Yong Fan's avatar Yong Fan
Browse files

Branch b1_6

b=15691
i=h.huang
i=johann

If there are too many locks on client-side, then some locks taken by
statahead maybe dropped automatically before the real "revalidate"
using them. Under such case the statahead should fail.
parent f73e24f8
No related branches found
No related tags found
No related merge requests found
......@@ -453,7 +453,10 @@ do_lock:
rc = mdc_intent_lock(exp, &op_data, NULL, 0, it, lookup_flags,
&req, ll_mdc_blocking_ast, 0);
if (it->it_op == IT_GETATTR && !first)
ll_statahead_exit(de, rc);
/* If there are too many locks on client-side, then some
* locks taken by statahead maybe dropped automatically
* before the real "revalidate" using them. */
ll_statahead_exit(de, req == NULL ? rc : 0);
else if (first == -EEXIST)
ll_statahead_mark(de);
......@@ -578,7 +581,7 @@ out_sa:
if (it && it->it_op == IT_GETATTR && rc == 1) {
first = ll_statahead_enter(de->d_parent->d_inode, &de, 0);
if (!first)
ll_statahead_exit(de, rc);
ll_statahead_exit(de, 1);
else if (first == -EEXIST)
ll_statahead_mark(de);
}
......
......@@ -4941,6 +4941,7 @@ test_123a() { # was test 123, statahead(bug 11401)
for ((i=1, j=0; i<=$NUMFREE; j=$i, i=$((i * MULT)) )); do
createmany -o $DIR/$tdir/$tfile $j $((i - j))
swrong=`lctl get_param -n llite.*.statahead_stats | grep "statahead wrong:" | awk '{print $3}'`
lctl get_param -n llite.*.statahead_max | grep '[0-9]'
cancel_lru_locks mdc
cancel_lru_locks osc
......@@ -4950,6 +4951,7 @@ test_123a() { # was test 123, statahead(bug 11401)
delta_sa=$((etime - stime))
log "ls $i files with statahead: $delta_sa sec"
lctl get_param -n llite.*.statahead_stats
ewrong=`lctl get_param -n llite.*.statahead_stats | grep "statahead wrong:" | awk '{print $3}'`
max=`lctl get_param -n llite.*.statahead_max | head -n 1`
lctl set_param -n llite.*.statahead_max 0
......@@ -4963,6 +4965,9 @@ test_123a() { # was test 123, statahead(bug 11401)
log "ls $i files without statahead: $delta sec"
lctl set_param llite.*.statahead_max=$max
if [ $swrong -lt $ewrong ]; then
log "statahead was stopped, maybe too many locks held!"
fi
if [ $delta_sa -gt $(($delta + 2)) ]; then
log "ls $i files is slower with statahead!"
error=1
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment