From dec38c69cbffe5d933d3d2f6c8c73391164837ef Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 23 Oct 2018 14:16:17 -0500 Subject: [PATCH] crush/CrushWrapper: reclassify: use default parent for created buckets Note that these last 2 fixes also fix the 'h' test case. \o/ Signed-off-by: Sage Weil --- src/crush/CrushWrapper.cc | 15 +++ src/test/cli/crushtool/crush-classes/g | Bin 0 -> 43071 bytes src/test/cli/crushtool/reclassify.t | 174 ++++++++++++++++++++++--- 3 files changed, 170 insertions(+), 19 deletions(-) create mode 100644 src/test/cli/crushtool/crush-classes/g diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index e98f1a6cfefd..9129d6206981 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -1959,6 +1959,21 @@ int CrushWrapper::reclassify( } } + // make sure new buckets have parents + for (auto& i : new_buckets) { + int parent; + if (get_immediate_parent_id(i.first, &parent) < 0) { + cout << "new bucket " << i.first << " missing parent, adding at " + << i.second << std::endl; + int r = link_bucket(cct, i.first, i.second); + if (r != 0) { + cout << __func__ << " err from insert_item: " << cpp_strerror(r) + << std::endl; + return r; + } + } + } + // set class mappings //cout << "pre class_bucket: " << class_bucket << std::endl; for (auto& i : new_class_bucket) { diff --git a/src/test/cli/crushtool/crush-classes/g b/src/test/cli/crushtool/crush-classes/g new file mode 100644 index 0000000000000000000000000000000000000000..0e27a9d9962e5c799f0638060fc4955a52c40057 GIT binary patch literal 43071 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