p != m->realms.end();
p++) {
CInode *in = mdcache->get_inode(inodeno_t(p->ino));
+ if (in && in->state_test(CInode::STATE_PURGING))
+ continue;
if (in) {
assert(in->snaprealm);
if (in->snaprealm->have_past_parents_open()) {
mdcache->last_cap_id = p->second.capinfo.cap_id;
CInode *in = mdcache->get_inode(p->first);
+ if (in && in->state_test(CInode::STATE_PURGING))
+ continue;
if (in && in->is_auth()) {
// we recovered it, and it's ours. take note.
dout(15) << "open cap realm " << inodeno_t(p->second.capinfo.snaprealm)
MClientRequest *req = mdr->client_request;
CInode *in = mdcache->get_inode(req->get_filepath().get_ino());
+ if (in && in->state_test(CInode::STATE_PURGING)) {
+ reply_request(mdr, -ESTALE);
+ return;
+ }
if (!in) {
// try the directory
CInode *diri = mdcache->get_inode(req->get_filepath2().get_ino());
- if (!diri) {
+ if (!diri || diri->state_test(CInode::STATE_PURGING)) {
reply_request(mdr, -ESTALE);
return;
}
if (offset && strcmp(dn->get_name().c_str(), offset) <= 0)
continue;
+ if (dn->state_test(CDentry::STATE_PURGING))
+ continue;
+
bool dnp = dn->use_projected(client, mdr);
CDentry::linkage_t *dnl = dnp ? dn->get_projected_linkage() : dn->get_linkage();
// traverse to path
CInode *diri = mdcache->get_inode(req->get_filepath().get_ino());
- if (!diri) {
+ if (!diri || diri->state_test(CInode::STATE_PURGING)) {
reply_request(mdr, -ESTALE);
return;
}
MClientRequest *req = mdr->client_request;
CInode *diri = mdcache->get_inode(req->get_filepath().get_ino());
- if (!diri) {
+ if (!diri || diri->state_test(CInode::STATE_PURGING)) {
reply_request(mdr, -ESTALE);
return;
}
MClientRequest *req = mdr->client_request;
CInode *diri = mdcache->get_inode(req->get_filepath().get_ino());
- if (!diri) {
+ if (!diri || diri->state_test(CInode::STATE_PURGING)) {
reply_request(mdr, -ESTALE);
return;
}