From: falconlee236 Date: Fri, 20 Mar 2026 10:53:58 +0000 (+0900) Subject: add tree branch logic in ceph osd df X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dd0b3808b749c17cd7b6cf6384319023f8706faf;p=ceph.git add tree branch logic in ceph osd df Signed-off-by: falconlee236 --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 2fd8f80bdc24..749d47715d55 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -7030,6 +7030,29 @@ public: average_util = average_utilization(); } + void dump(F *f){ + if (tree) { + CrushTreeDumper::Dumper::dump(f); + } else { + this->reset(); + CrushTreeDumper::Item qi; + std::vector 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 {