Signed-off-by: Sage Weil <sage@newdream.net>
split_queue.insert(dir->dirfrag());
}
+void MDBalancer::queue_merge(CDir *dir)
+{
+ merge_queue.insert(dir->dirfrag());
+}
+
void MDBalancer::do_fragmenting()
{
if (split_queue.empty() && merge_queue.empty()) {
void dump_pop_map();
void queue_split(CDir *dir);
+ void queue_merge(CDir *dir);
};
CDir *dir = ls.front();
if (!dir->get_parent_dir()) continue; // must be linked.
if (!dir->is_auth()) continue; // must be auth.
- mdcache->split_dir(dir, 1);// + (rand() % 3));
+ if (dir->get_frag() == frag_t() || (rand() % 3 == 0)) {
+ mdcache->split_dir(dir, 1);
+ } else
+ balancer->queue_merge(dir);
}
// hack: force hash root?