]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
crush: fix crush_get_bucket_item_weight and bucket destroy for straw2
authorSage Weil <sage@redhat.com>
Tue, 10 Mar 2015 13:38:06 +0000 (06:38 -0700)
committerSage Weil <sage@redhat.com>
Tue, 10 Mar 2015 13:46:52 +0000 (06:46 -0700)
Fixes: #11079
Signed-off-by: Sage Weil <sage@redhat.com>
src/crush/crush.c

index c45b6f501b224e5d617076272aa40681a52a756e..c0bcdb794355f64942548e9bfcce2dbf4d686612 100644 (file)
@@ -42,6 +42,8 @@ int crush_get_bucket_item_weight(const struct crush_bucket *b, int p)
                return ((struct crush_bucket_tree *)b)->node_weights[crush_calc_tree_node(p)];
        case CRUSH_BUCKET_STRAW:
                return ((struct crush_bucket_straw *)b)->item_weights[p];
+       case CRUSH_BUCKET_STRAW2:
+               return ((struct crush_bucket_straw2 *)b)->item_weights[p];
        }
        return 0;
 }
@@ -79,6 +81,14 @@ void crush_destroy_bucket_straw(struct crush_bucket_straw *b)
        kfree(b);
 }
 
+void crush_destroy_bucket_straw2(struct crush_bucket_straw2 *b)
+{
+       kfree(b->item_weights);
+       kfree(b->h.perm);
+       kfree(b->h.items);
+       kfree(b);
+}
+
 void crush_destroy_bucket(struct crush_bucket *b)
 {
        switch (b->alg) {
@@ -94,6 +104,9 @@ void crush_destroy_bucket(struct crush_bucket *b)
        case CRUSH_BUCKET_STRAW:
                crush_destroy_bucket_straw((struct crush_bucket_straw *)b);
                break;
+       case CRUSH_BUCKET_STRAW2:
+               crush_destroy_bucket_straw2((struct crush_bucket_straw2 *)b);
+               break;
        }
 }