dout(7) << "simple_rdlock_finish on " << *lock << " on " << *lock->get_parent() << dendl;
// last one?
- if (!lock->is_rdlocked())
- simple_eval_gather(lock);
+ if (!lock->is_rdlocked()) {
+ if (!lock->is_stable())
+ simple_eval_gather(lock);
+ else if (lock->get_parent()->is_auth())
+ simple_eval(lock);
+ }
}
bool Locker::simple_xlock_start(SimpleLock *lock, MDRequest *mut)
lock->get_parent()->set_object_info(slavereq->get_object_info());
mds->send_message_mds(slavereq, auth);
}
- } else {
-
- // xlocker lease?
- if (lock->get_num_client_lease())
- simple_sync(lock); // _must_ sync now.. xlocker already has a lease!
}
// others waiting?
SimpleLock::WAIT_RD, 0);
// eval?
- if (lock->get_parent()->is_auth())
+ if (!lock->is_stable())
+ simple_eval_gather(lock);
+ else if (lock->get_parent()->is_auth())
simple_eval(lock);
}
SimpleLock::WAIT_WR |
SimpleLock::WAIT_RD, 0);
- if (lock->get_parent()->is_auth())
+ if (!lock->is_stable())
+ scatter_eval_gather(lock);
+ else if (lock->get_parent()->is_auth())
scatter_eval(lock);
}
SimpleLock::WAIT_WR |
SimpleLock::WAIT_RD, 0);
- if (lock->get_parent()->is_auth() &&
- lock->is_stable())
+ // eval?
+ if (!lock->is_stable())
+ file_eval_gather(lock);
+ else if (lock->get_parent()->is_auth())
file_eval(lock);
}