o1=`ceph osd create`
o2=`ceph osd create`
ceph osd crush add $o1 1 host=host1 root=foo
+ceph osd crush add $o1 1 host=host1 root=foo # idemptoent
ceph osd crush add $o2 1 host=host2 root=foo
+ceph osd crush add $o2 1 host=host2 root=foo # idempotent
ceph osd crush add-bucket bar root
+ceph osd crush add-bucket bar root # idempotent
ceph osd crush link host1 root=bar
+ceph osd crush link host1 root=bar # idempotent
ceph osd crush link host2 root=bar
+ceph osd crush link host2 root=bar # idempotent
ceph osd tree | grep -c osd.$o1 | grep -q 2
ceph osd tree | grep -c host1 | grep -q 2
_get_pending_crush(newcrush);
string action;
- if (prefix == "osd crush set") {
+ if (prefix == "osd crush set" ||
+ newcrush.check_item_loc(g_ceph_context, id, loc, (int *)NULL)) {
action = "set";
err = newcrush.update_item(g_ceph_context, id, weight, name, loc);
} else {