lock->is_stable())
lock->get_parent()->auth_unpin(lock);
- if (caps)
- in->try_drop_loner();
-
lock->finish_waiters(SimpleLock::WAIT_STABLE|SimpleLock::WAIT_WR|SimpleLock::WAIT_RD|SimpleLock::WAIT_XLOCK);
if (caps) {
eval_any(&in->nestlock, &need_issue);
// drop loner?
- if (in->is_auth() && in->get_loner() >= 0) {
- if (in->multiple_nonstale_caps() &&
- in->try_drop_loner()) {
+ if (in->is_auth() && in->get_loner() >= 0 &&
+ in->multiple_nonstale_caps()) {
+ dout(10) << " trying to drop loner" << dendl;
+ if (in->try_drop_loner()) {
dout(10) << " dropped loner" << dendl;
need_issue = true;
}
dout(7) << "simple_eval stable, syncing " << *lock
<< " on " << *lock->get_parent() << dendl;
simple_sync(lock, need_issue);
-
- // drop loner?
- if (in && in->get_loner() >= 0) {
- if (in->multiple_nonstale_caps() &&
- in->try_drop_loner()) {
- dout(10) << " dropped loner" << dendl;
- if (need_issue)
- *need_issue = true;
- }
- }
}
}
lock->encode_locked_state(data);
send_lock_message(lock, LOCK_AC_SYNC, data);
}
- if (in)
- in->try_drop_loner();
lock->set_state(LOCK_SYNC);
lock->finish_waiters(SimpleLock::WAIT_RD|SimpleLock::WAIT_STABLE);
return true;
if (gather) {
lock->get_parent()->auth_pin(lock);
} else {
- if (in)
- in->try_drop_loner();
lock->set_state(LOCK_LOCK);
lock->finish_waiters(ScatterLock::WAIT_XLOCK|ScatterLock::WAIT_WR|ScatterLock::WAIT_STABLE);
}
in->auth_pin(lock);
} else {
// do tempsync
- in->try_drop_loner();
-
lock->set_state(LOCK_TSYN);
lock->finish_waiters(ScatterLock::WAIT_RD|ScatterLock::WAIT_STABLE);
}
simple_sync(lock, need_issue);
else
dout(10) << " waiting for wrlock to drain" << dendl;
-
- // drop loner?
- if (in->get_loner() >= 0) {
- if (in->multiple_nonstale_caps() &&
- in->try_drop_loner()) {
- dout(10) << " dropped loner" << dendl;
- if (need_issue)
- *need_issue = true;
- }
- }
}
}
if (gather)
lock->get_parent()->auth_pin(lock);
else {
- in->try_drop_loner();
lock->set_state(LOCK_MIX);
lock->clear_scatter_wanted();
if (in->is_replicated()) {