From: Sage Weil Date: Sat, 12 Aug 2017 19:19:45 +0000 (-0400) Subject: crush/CrushWrapper: fixing timing of removal in remove_item_under X-Git-Tag: v13.0.0~109^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F16883%2Fhead;p=ceph.git crush/CrushWrapper: fixing timing of removal in remove_item_under Do it after we reweight, not before Signed-off-by: Sage Weil --- diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index e91f24b02675..76c6afe60a5c 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -510,13 +510,13 @@ int CrushWrapper::_remove_item_under( if (id == item) { ldout(cct, 5) << "_remove_item_under removing item " << item << " from bucket " << b->id << dendl; - bucket_remove_item(b, item); for (auto& p : choose_args) { // weight down each weight-set to 0 before we remove the item vector weightv(get_choose_args_positions(p.second), 0); _choose_args_adjust_item_weight_in_bucket( cct, p.second, b->id, item, weightv, nullptr); } + bucket_remove_item(b, item); adjust_item_weight(cct, b->id, b->weight); ret = 0; } else if (id < 0) {