]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush/CrushWrapper: fixing timing of removal in remove_item_under 16883/head
authorSage Weil <sage@redhat.com>
Sat, 12 Aug 2017 19:19:45 +0000 (15:19 -0400)
committerSage Weil <sage@redhat.com>
Sat, 12 Aug 2017 19:25:28 +0000 (15:25 -0400)
Do it after we reweight, not before

Signed-off-by: Sage Weil <sage@redhat.com>
src/crush/CrushWrapper.cc

index e91f24b02675b761918e9b168782b4dd6bd03da8..76c6afe60a5ce32535af0c088f30f4d2a0d86998 100644 (file)
@@ -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<int> 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) {