}
assert(subtrees.empty());
- if (myin)
+ if (myin) {
remove_inode(myin);
-
+ assert(!myin);
+ }
+
// done!
dout(2) << "shutdown done." << dendl;
return true;
{
set<mds_rank_t> all, active;
mds->mdsmap->get_mds_set(all);
- mds->mdsmap->get_clientreplay_or_active_or_stopping_mds_set(active);
if (mds->get_state() == MDSMap::STATE_REJOIN)
- mds->mdsmap->get_mds_set(active, MDSMap::STATE_REJOIN);
+ mds->mdsmap->get_mds_set_lower_bound(active, MDSMap::STATE_REJOIN);
+ else
+ mds->mdsmap->get_mds_set_lower_bound(active, MDSMap::STATE_CLIENTREPLAY);
dout(10) << "do_open_ino_peer " << ino << " active " << active
<< " all " << all << " checked " << info.checked << dendl;
{
set<mds_rank_t> all, active;
mds->mdsmap->get_mds_set(all);
- mds->mdsmap->get_clientreplay_or_active_or_stopping_mds_set(active);
+ mds->mdsmap->get_mds_set_lower_bound(active, MDSMap::STATE_CLIENTREPLAY);
dout(10) << "_do_find_ino_peer " << fip.tid << " " << fip.ino
<< " active " << active << " all " << all
}
show_subtrees(10);
-
- // dir has no PIN_SUBTREE; CDir::purge_stolen() drops it.
- dir->dir_auth = CDIR_AUTH_DEFAULT;
}
diri->close_dirfrag(dir->get_frag());
mdr->internal_op_finish = cs;
enqueue_scrub_work(mdr);
+
+ // since recursive scrub is asynchronous, dump minimal output
+ // to not upset cli tools.
+ if (recursive) {
+ f->open_object_section("results");
+ f->close_section(); // results
+ }
}
void MDCache::enqueue_scrub_work(MDRequestRef& mdr)