From: Sage Weil Date: Mon, 7 Aug 2017 20:50:44 +0000 (-0400) Subject: crush: do add/remove before updating weight-sets X-Git-Tag: v13.0.0~109^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1f62ee8408d8cff91df5fd23f2ddfd58197a5b10;p=ceph.git crush: do add/remove before updating weight-sets Signed-off-by: Sage Weil --- diff --git a/src/crush/CrushWrapper.cc b/src/crush/CrushWrapper.cc index 26350e63975f..eb35ff7326ff 100644 --- a/src/crush/CrushWrapper.cc +++ b/src/crush/CrushWrapper.cc @@ -1739,6 +1739,10 @@ int CrushWrapper::add_bucket( int CrushWrapper::bucket_add_item(crush_bucket *bucket, int item, int weight) { __u32 new_size = bucket->size + 1; + int r = crush_bucket_add_item(crush, bucket, item, weight); + if (r < 0) { + return r; + } for (auto w : choose_args) { crush_choose_arg_map arg_map = w.second; crush_choose_arg *arg = &arg_map.args[-1-bucket->id]; @@ -1757,7 +1761,7 @@ int CrushWrapper::bucket_add_item(crush_bucket *bucket, int item, int weight) arg->ids_size = new_size; } } - return crush_bucket_add_item(crush, bucket, item, weight); + return 0; } int CrushWrapper::bucket_remove_item(crush_bucket *bucket, int item) @@ -1768,6 +1772,10 @@ int CrushWrapper::bucket_remove_item(crush_bucket *bucket, int item) if (bucket->items[position] == item) break; assert(position != bucket->size); + int r = crush_bucket_remove_item(crush, bucket, item); + if (r < 0) { + return r; + } for (auto w : choose_args) { crush_choose_arg_map arg_map = w.second; crush_choose_arg *arg = &arg_map.args[-1-bucket->id]; @@ -1788,7 +1796,7 @@ int CrushWrapper::bucket_remove_item(crush_bucket *bucket, int item) arg->ids_size = new_size; } } - return crush_bucket_remove_item(crush, bucket, item); + return 0; } int CrushWrapper::update_device_class(int id,