}
}
- for (auto &cd : mds->mdcache->get_auth_subtrees()) {
+ std::vector<CDir *> authsubs = mds->mdcache->get_auth_subtrees();
+ bool print_auth_subtrees = true;
+
+ if (authsubs.size() > AUTH_TREES_THRESHOLD &&
+ !g_conf()->subsys.should_gather<ceph_subsys_mds, 25>()) {
+ dout(15) << "number of auth trees = " << authsubs.size() << "; not "
+ "printing auth trees" << dendl;
+ print_auth_subtrees = false;
+ }
+
+ for (auto &cd : authsubs) {
mds_rank_t export_pin = cd->inode->get_export_pin();
- dout(10) << "auth tree " << *cd << " export_pin=" << export_pin << dendl;
+
+ if (print_auth_subtrees) {
+ dout(25) << "auth tree " << *cd << " export_pin=" << export_pin <<
+ dendl;
+ }
+
if (export_pin >= 0 && export_pin != mds->get_nodeid()) {
- dout(10) << "exporting auth subtree " << *cd->inode << " to " << export_pin << dendl;
mds->mdcache->migrator->export_dir(cd, export_pin);
}
}
private:
bool bal_fragment_dirs;
int64_t bal_fragment_interval;
+ static const unsigned int AUTH_TREES_THRESHOLD = 5;
typedef struct {
std::map<mds_rank_t, double> targets;