average_util = average_utilization();
}
+ void dump(F *f){
+ if (tree) {
+ CrushTreeDumper::Dumper<F>::dump(f);
+ } else {
+ this->reset();
+ CrushTreeDumper::Item qi;
+ std::vector<CrushTreeDumper::Item> flat_items;
+
+ while (this->next(qi)) {
+ if (!qi.is_bucket()) {
+ flat_items.push_back(qi);
+ }
+ }
+
+ std::sort(flat_items.begin(), flat_items.end(),
+ [](const auto& a, const auto& b) { return a.id < b.id; });
+
+ for (const auto& item : flat_items) {
+ this->dump_item(item, f);
+ }
+ }
+ }
+
protected:
bool should_dump(int id) const {