]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
add tree branch logic in ceph osd df
authorfalconlee236 <falconlee236@gmail.com>
Fri, 20 Mar 2026 10:53:58 +0000 (19:53 +0900)
committerfalconlee236 <falconlee236@gmail.com>
Fri, 20 Mar 2026 11:18:31 +0000 (20:18 +0900)
Signed-off-by: falconlee236 <falconlee236@gmail.com>
src/osd/OSDMap.cc

index 2fd8f80bdc24f71d8e5da40582d69f93246cc1fd..749d47715d558d79d41d35113b8283793f3f6891 100644 (file)
@@ -7030,6 +7030,29 @@ public:
     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 {