]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: block_name_prefix is not created randomly 22675/head
authorhyun-ha <hyun.ha@navercorp.com>
Fri, 22 Jun 2018 16:10:20 +0000 (01:10 +0900)
committerJason Dillaman <dillaman@redhat.com>
Tue, 11 Sep 2018 19:28:14 +0000 (15:28 -0400)
fixes: http://tracker.ceph.com/issues/24634
Signed-off-by: hyun ha hyun.ha@navercorp.com
src/librbd/Utils.cc

index d4b4c94914ff32d3970e75ac42bd90d5de9b6f2c..a858ddf857c31ce10a5cb35bdd06370253f16cff 100644 (file)
@@ -11,6 +11,7 @@
 #include "common/dout.h"
 #include "librbd/ImageCtx.h"
 #include "librbd/Features.h"
+#include <random>
 
 #define dout_subsys ceph_subsys_rbd
 #undef dout_prefix
@@ -51,7 +52,9 @@ std::string generate_image_id(librados::IoCtx &ioctx) {
   librados::Rados rados(ioctx);
 
   uint64_t bid = rados.get_instance_id();
-  uint32_t extra = rand() % 0xFFFFFFFF;
+  std::mt19937 generator{std::random_device{}()};
+  std::uniform_int_distribution<uint32_t> distribution{0, 0xFFFFFFFF};
+  uint32_t extra = distribution(generator);
 
   ostringstream bid_ss;
   bid_ss << std::hex << bid << std::hex << extra;