diff options
author | Sage Weil <sage.weil@dreamhost.com> | 2012-02-24 13:52:32 -0800 |
---|---|---|
committer | Sage Weil <sage.weil@dreamhost.com> | 2012-02-24 13:52:32 -0800 |
commit | 708be0a5abef63a5da8409ad13719adb7bb744f8 (patch) | |
tree | 0d90b3314dd37edf1ce2e219468bc062979ad977 | |
parent | b0feba56bd563321bdb6a347e9a863bc8eae1a9c (diff) | |
parent | 7700ea94f971feed1486bce5fe9cf2a88ef046f9 (diff) | |
download | ceph-708be0a5abef63a5da8409ad13719adb7bb744f8.tar.gz |
Merge remote branch 'gh/wip-crush-adjust'
Reviewed-by: Tommi Virtanen <tommi.virtanen@dreamhost.com>
-rw-r--r-- | src/crush/builder.c | 4 | ||||
-rw-r--r-- | src/test/cli/crushtool/multitype.after | 87 | ||||
-rw-r--r-- | src/test/cli/crushtool/multitype.before | 87 | ||||
-rw-r--r-- | src/test/cli/crushtool/reweight.t | 8 |
4 files changed, 184 insertions, 2 deletions
diff --git a/src/crush/builder.c b/src/crush/builder.c index dcf5a8b6457..c68fdf04eed 100644 --- a/src/crush/builder.c +++ b/src/crush/builder.c @@ -727,7 +727,7 @@ int crush_adjust_list_bucket_item_weight(struct crush_bucket_list *bucket, int i if (i == bucket->h.size) return 0; - diff = weight = bucket->item_weights[i]; + diff = weight - bucket->item_weights[i]; bucket->item_weights[i] = weight; bucket->h.weight += diff; @@ -752,7 +752,7 @@ int crush_adjust_tree_bucket_item_weight(struct crush_bucket_tree *bucket, int i return 0; node = crush_calc_tree_node(i); - diff = weight = bucket->node_weights[node]; + diff = weight - bucket->node_weights[node]; bucket->node_weights[node] = weight; bucket->h.weight += diff; diff --git a/src/test/cli/crushtool/multitype.after b/src/test/cli/crushtool/multitype.after new file mode 100644 index 00000000000..9c7da0aad6c --- /dev/null +++ b/src/test/cli/crushtool/multitype.after @@ -0,0 +1,87 @@ +# begin crush map + +# devices +device 0 osd0 +device 1 osd1 +device 2 osd2 +device 3 osd3 +device 4 osd4 +device 5 osd5 +device 6 osd6 +device 7 osd7 +device 8 osd8 +device 9 osd9 + +# types +type 0 osd +type 1 host +type 2 cluster + +# buckets +host host0 { + id -2 # do not change unnecessarily + # weight 3.000 + alg straw + hash 0 # rjenkins1 + item osd0 weight 2.000 + item osd1 weight 1.000 +} +host host1 { + id -3 # do not change unnecessarily + # weight 3.000 + alg list # add new items at the end; do not change order unnecessarily + hash 0 # rjenkins1 + item osd3 weight 2.000 + item osd4 weight 1.000 +} +host host2 { + id -4 # do not change unnecessarily + # weight 5.500 + alg tree # do not change pos for existing items unnecessarily + hash 0 # rjenkins1 + item osd5 weight 1.000 pos 0 + item osd6 weight 2.000 pos 1 + item osd7 weight 0.500 pos 2 + item osd8 weight 1.000 pos 3 + item osd9 weight 1.000 pos 4 +} +cluster cluster0 { + id -1 # do not change unnecessarily + # weight 11.500 + alg straw + hash 0 # rjenkins1 + item host0 weight 3.000 + item host1 weight 3.000 + item host2 weight 5.500 +} + +# rules +rule data { + ruleset 0 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} +rule metadata { + ruleset 1 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} +rule rbd { + ruleset 2 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} + +# end crush map diff --git a/src/test/cli/crushtool/multitype.before b/src/test/cli/crushtool/multitype.before new file mode 100644 index 00000000000..8adcda9c3b7 --- /dev/null +++ b/src/test/cli/crushtool/multitype.before @@ -0,0 +1,87 @@ +# begin crush map + +# devices +device 0 osd0 +device 1 osd1 +device 2 osd2 +device 3 osd3 +device 4 osd4 +device 5 osd5 +device 6 osd6 +device 7 osd7 +device 8 osd8 +device 9 osd9 + +# types +type 0 osd +type 1 host +type 2 cluster + +# buckets +host host0 { + id -2 # do not change unnecessarily + # weight 2.000 + alg straw + hash 0 # rjenkins1 + item osd0 weight 1.000 + item osd1 weight 1.000 +} +host host1 { + id -3 # do not change unnecessarily + # weight 2.000 + alg list + hash 0 # rjenkins1 + item osd3 weight 1.000 + item osd4 weight 1.000 +} +host host2 { + id -4 # do not change unnecessarily + # weight 2.000 + alg tree + hash 0 # rjenkins1 + item osd5 weight 1.000 + item osd6 weight 1.000 + item osd7 weight 1.000 + item osd8 weight 1.000 + item osd9 weight 1.000 +} +cluster cluster0 { + id -1 # do not change unnecessarily + # weight 2.000 + alg straw + hash 0 # rjenkins1 + item host0 weight 2.000 + item host1 weight 2.000 + item host2 weight 5.000 +} + +# rules +rule data { + ruleset 0 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} +rule metadata { + ruleset 1 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} +rule rbd { + ruleset 2 + type replicated + min_size 1 + max_size 10 + step take cluster0 + step chooseleaf firstn 0 type host + step emit +} + +# end crush map diff --git a/src/test/cli/crushtool/reweight.t b/src/test/cli/crushtool/reweight.t new file mode 100644 index 00000000000..f4da5c9cb30 --- /dev/null +++ b/src/test/cli/crushtool/reweight.t @@ -0,0 +1,8 @@ + $ crushtool -c "$TESTDIR/multitype.before" -o mt > /dev/null + $ crushtool -i mt --reweight-item osd0 2.0 -o mt > /dev/null + $ crushtool -i mt --reweight-item osd3 2.0 -o mt > /dev/null + $ crushtool -i mt --reweight-item osd6 2.0 -o mt > /dev/null + $ crushtool -i mt --reweight-item osd7 .5 -o mt > /dev/null + $ crushtool -d mt -o final + $ diff final "$TESTDIR/multitype.after" + $ rm mt final |