if (!finished.empty())
mds->queue_waiters(finished);
+ MDSGatherBuilder gather(g_ceph_context);
bool success = true;
if (mds->is_active()) {
CDir *bound = cache->get_dirfrag(dirfrag_t(p->first, *q));
if (!bound) {
dout(7) << " opening bounding dirfrag " << *q << " on " << *in << dendl;
- cache->open_remote_dirfrag(in, *q,
- new C_MDS_RetryMessage(mds, m));
- return;
+ cache->open_remote_dirfrag(in, *q, gather.new_sub());
+ continue;
}
if (!bound->state_test(CDir::STATE_IMPORTBOUND)) {
}
}
+ if (gather.has_subs()) {
+ gather.set_finisher(new C_MDS_RetryMessage(mds, m));
+ gather.activate();
+ return;
+ }
+
dout(7) << " all ready, noting auth and freezing import region" << dendl;
if (!mds->mdcache->is_readonly() &&