]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crush/CrushWrapper: encode choose_args.size() as __u32
authorIlya Dryomov <idryomov@gmail.com>
Tue, 27 Jun 2017 14:47:38 +0000 (16:47 +0200)
committerIlya Dryomov <idryomov@gmail.com>
Fri, 30 Jun 2017 12:37:13 +0000 (14:37 +0200)
choose_args.size() returns size_t, which is not fixed size.  Given that
choose_args code just open-codes our std::map encoder, do what we do for
std::map.

This was introduced in commit dbe36e08be00 ("crush: compile/decompile
crush_choose_arg_map") under SERVER_LUMINOUS bit.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
src/crush/CrushWrapper.cc
src/test/cli/osdmaptool/crush.t

index 650b2cfe04a494748514f19091eeab772b591d34..f375c7412f853cd762fd1b5bd91a09264d6ee701 100644 (file)
@@ -1756,11 +1756,12 @@ void CrushWrapper::encode(bufferlist& bl, uint64_t features) const
     ::encode(class_name, bl);
     ::encode(class_bucket, bl);
 
-    ::encode(choose_args.size(), bl);
+    __u32 size = (__u32)choose_args.size();
+    ::encode(size, bl);
     for (auto c : choose_args) {
       ::encode(c.first, bl);
       crush_choose_arg_map arg_map = c.second;
-      __u32 size = 0;
+      size = 0;
       for (__u32 i = 0; i < arg_map.size; i++) {
        crush_choose_arg *arg = &arg_map.args[i];
        if (arg->weight_set_size == 0 &&
@@ -1889,9 +1890,9 @@ void CrushWrapper::decode(bufferlist::iterator& blp)
       cleanup_classes();
     }
     if (!blp.end()) {
-      size_t choose_args_size;
+      __u32 choose_args_size;
       ::decode(choose_args_size, blp);
-      for (size_t i = 0; i < choose_args_size; i++) {
+      for (__u32 i = 0; i < choose_args_size; i++) {
        uint64_t choose_args_index;
        ::decode(choose_args_index, blp);
        crush_choose_arg_map arg_map;
index 6086fc43e32efa41415ab219d412ffbfe893d450..c01c952b8041dbdb3d134bb61eacbaa56851b3eb 100644 (file)
@@ -6,5 +6,5 @@
   osdmaptool: exported crush map to oc
   $ osdmaptool --import-crush oc myosdmap
   osdmaptool: osdmap file 'myosdmap'
-  osdmaptool: imported 489 byte crush map from oc
+  osdmaptool: imported 485 byte crush map from oc
   osdmaptool: writing epoch 3 to myosdmap