Commit dec9098a authored by Martin Blix Grydeland's avatar Martin Blix Grydeland

Clear the pass oc flag bits earlier in the ban lurker

The pass bits of the oc's flags wasn't cleared before or'ing the new
pass on failing the busy object test in the ban lurker. This would
cause the pass not to be matched later, making the lurker spin on the
busy object.

Fixes: #1470
parent efe50681
......@@ -843,6 +843,10 @@ ban_lurker_work(const struct sess *sp, unsigned pass)
TIM_sleep(params->ban_lurker_sleep);
continue;
}
/*
* Clear this oc's pass bits.
*/
oc->flags &= ~OC_F_LURK;
/*
* If the object is busy, we can't touch
* it. Defer it to a later run.
......@@ -861,7 +865,6 @@ ban_lurker_work(const struct sess *sp, unsigned pass)
*/
AN(oc->refcnt);
oc->refcnt++;
oc->flags &= ~OC_F_LURK;
Lck_Unlock(&ban_mtx);
/*
* Get the object and check it against all relevant bans
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment