}
}
+ assert(rejoin_gather.count(from));
+ rejoin_gather.erase(from);
if (survivor) {
// survivor. do everything now.
for (map<inodeno_t,MMDSCacheRejoin::lock_bls>::iterator p = weak->inode_scatterlocks.begin();
mds->locker->eval_gather(*p);
} else {
// done?
- assert(rejoin_gather.count(from));
- rejoin_gather.erase(from);
if (rejoin_gather.empty()) {
rejoin_gather_finish();
} else {
for (map<int,int>::iterator p = dn->replicas_begin();
p != dn->replicas_end();
++p) {
- if (mds->mdsmap->get_state(p->first) < MDSMap::STATE_REJOIN)
+ if (mds->mdsmap->get_state(p->first) < MDSMap::STATE_REJOIN ||
+ (mds->mdsmap->get_state(p->first) == MDSMap::STATE_REJOIN &&
+ rejoin_gather.count(p->first)))
continue;
CDentry::linkage_t *dnl = dn->get_linkage();
MDentryLink *m = new MDentryLink(subtree->dirfrag(), dn->get_dir()->dirfrag(),
if (mdr && mdr->more()->witnessed.count(it->first))
continue;
+ if (mds->mdsmap->get_state(it->first) < MDSMap::STATE_REJOIN ||
+ (mds->mdsmap->get_state(it->first) == MDSMap::STATE_REJOIN &&
+ rejoin_gather.count(it->first)))
+ continue;
+
MDentryUnlink *unlink = new MDentryUnlink(dn->get_dir()->dirfrag(), dn->name);
if (straydn)
replicate_stray(straydn, it->first, unlink->straybl);