}
+void MDCache::resolve_start()
+{
+ dout(10) << "resolve_start" << dendl;
+
+ if (mds->mdsmap->get_root() != mds->whoami) {
+ // if we don't have the root dir, adjust it to UNKNOWN. during
+ // resolve we want mds0 to explicit claim the portion of it that
+ // it owns, so that anything beyond its bounds get left as
+ // unknown.
+ CDir *rootdir = root->get_dirfrag(frag_t());
+ adjust_subtree_auth(rootdir, CDIR_AUTH_UNKNOWN);
+ }
+
+ set<int> who;
+ mds->mdsmap->get_mds_set(who, MDSMap::STATE_RESOLVE);
+ mds->mdsmap->get_mds_set(who, MDSMap::STATE_REJOIN);
+ mds->mdsmap->get_mds_set(who, MDSMap::STATE_CLIENTREPLAY);
+ mds->mdsmap->get_mds_set(who, MDSMap::STATE_ACTIVE);
+ mds->mdsmap->get_mds_set(who, MDSMap::STATE_STOPPING);
+ for (set<int>::iterator p = who.begin(); p != who.end(); ++p) {
+ if (*p == mds->whoami)
+ continue;
+ send_resolve(*p); // now.
+ }
+}
+
void MDCache::send_resolve(int who)
{
if (migrator->is_importing() ||
}
void cancel_ambiguous_import(dirfrag_t dirino);
void finish_ambiguous_import(dirfrag_t dirino);
+ void resolve_start();
void send_resolve(int who);
void send_resolve_now(int who);
void send_resolve_later(int who);
void MDS::resolve_start()
{
dout(1) << "resolve_start" << dendl;
-
- set<int> who;
- mdsmap->get_mds_set(who, MDSMap::STATE_RESOLVE);
- mdsmap->get_mds_set(who, MDSMap::STATE_REJOIN);
- mdsmap->get_mds_set(who, MDSMap::STATE_ACTIVE);
- mdsmap->get_mds_set(who, MDSMap::STATE_STOPPING);
- for (set<int>::iterator p = who.begin(); p != who.end(); ++p) {
- if (*p == whoami) continue;
- mdcache->send_resolve(*p); // now.
- }
+ mdcache->resolve_start();
}
void MDS::resolve_done()
{