@@ -834,12 +834,7 @@ void Locker::try_eval(MDSCacheObject *p, int mask)
return;
}
- if (!p->is_auth()) {
- dout(7) << "try_eval not auth for " << *p << dendl;
- return;
- }
-
- if (!p->can_auth_pin()) {
+ if (p->is_auth() && !p->can_auth_pin()) {
dout(7) << "try_eval can't auth_pin, waiting on " << *p << dendl;
p->add_waiter(MDSCacheObject::WAIT_UNFREEZE, new C_Locker_Eval(this, p, mask));
return;
@@ -847,9 +842,11 @@ void Locker::try_eval(MDSCacheObject *p, int mask)
if (mask & CEPH_LOCK_DN) {
assert(mask == CEPH_LOCK_DN);
- bool need_issue = false; // ignore this, no caps on dentries
- CDentry *dn = (CDentry *)p;
- simple_eval(&dn->lock, &need_issue);
+ if (p->is_auth()) {
+ bool need_issue = false; // ignore this, no caps on dentries
+ CDentry *dn = (CDentry *)p;
+ simple_eval(&dn->lock, &need_issue);
+ }
} else {
CInode *in = (CInode *)p;
eval(in, mask);