]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/HitSet: take Params as const ref to avoid confusion about ownership
authorSage Weil <sage@inktank.com>
Wed, 4 Dec 2013 22:41:40 +0000 (14:41 -0800)
committerSage Weil <sage@inktank.com>
Fri, 6 Dec 2013 22:37:29 +0000 (14:37 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/HitSet.cc
src/osd/HitSet.h
src/osd/ReplicatedPG.cc

index fb9348c8fb4efb687a28dfd1f9feb33ff8adde13..e38ba549972a29526deed2ac5cf8d8dc38db2fdb 100644 (file)
 
 // -- HitSet --
 
-HitSet::HitSet(HitSet::Params *params)
+HitSet::HitSet(const HitSet::Params& params)
 {
-  switch (params->get_type()) {
+  switch (params.get_type()) {
   case TYPE_BLOOM:
-    impl.reset(new BloomHitSet(static_cast<BloomHitSet::Params*>(params->impl.get())));
+    {
+      BloomHitSet::Params *p =
+       static_cast<BloomHitSet::Params*>(params.impl.get());
+      impl.reset(new BloomHitSet(p));
+    }
     break;
 
   case TYPE_EXPLICIT_HASH:
-    impl.reset(new ExplicitHashHitSet(static_cast<ExplicitHashHitSet::Params*>(params->impl.get())));
+    impl.reset(new ExplicitHashHitSet(static_cast<ExplicitHashHitSet::Params*>(params.impl.get())));
     break;
 
   case TYPE_EXPLICIT_OBJECT:
-    impl.reset(new ExplicitObjectHitSet(static_cast<ExplicitObjectHitSet::Params*>(params->impl.get())));
+    impl.reset(new ExplicitObjectHitSet(static_cast<ExplicitObjectHitSet::Params*>(params.impl.get())));
     break;
 
   case TYPE_NONE:
index bb8fa1ec3be827aa17b523329f2178ed2c25fd02..ace4d052a1b71d270242f6ba68afb24b8f7f6b17 100644 (file)
@@ -115,7 +115,7 @@ public:
 
   HitSet() : impl(NULL), sealed(false) {}
   HitSet(Impl *i) : impl(i), sealed(false) {}
-  HitSet(HitSet::Params *params);
+  HitSet(const HitSet::Params& params);
 
   HitSet(const HitSet& o) {
     sealed = o.sealed;
@@ -349,7 +349,8 @@ public:
     uint64_t target_size;  ///< number of unique insertions we expect to this HitSet
     uint64_t seed;         ///< seed to use when initializing the bloom filter
 
-    Params() : false_positive(0), target_size(0), seed(0) {}
+    Params()
+      : false_positive(0), target_size(0), seed(0) {}
     Params(double fpp, uint64_t t, uint64_t s)
       : false_positive(fpp), target_size(t), seed(s) {}
     Params(const Params &o)
index e140f7e86c187dc5c6875a53f9f8b8179db4b359..26c0a6cd86417848cad4dacc9054309bf8095f77 100644 (file)
@@ -8503,11 +8503,12 @@ void ReplicatedPG::hit_set_create()
 {
   utime_t now = ceph_clock_now(NULL);
   // make a copy of the params to modify
-  HitSet::Params *params = new HitSet::Params(pool.info.hit_set_params);
+  HitSet::Params params(pool.info.hit_set_params);
 
   if (pool.info.hit_set_params.get_type() == HitSet::TYPE_BLOOM) {
     BloomHitSet::Params *p =
-      static_cast<BloomHitSet::Params*>(params->impl.get());
+      static_cast<BloomHitSet::Params*>(params.impl.get());
+    dout(20) << __func__ << " " << params << " " << p << dendl;
 
     // convert false positive rate so it holds up across the full period
     p->false_positive = p->false_positive / pool.info.hit_set_count;