]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: initialize bloom filter according to dirfrag size
authorYan, Zheng <zheng.z.yan@intel.com>
Wed, 2 Apr 2014 01:33:37 +0000 (09:33 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Wed, 2 Apr 2014 04:19:34 +0000 (12:19 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/CDir.cc

index 6e93ec5ecea737777dd9eece940ebe8b74d2b150..10189773caf2a7f712faa1b3078de02517a392d1 100644 (file)
@@ -616,7 +616,9 @@ void CDir::add_to_bloom(CDentry *dn)
     /* not create bloom filter for incomplete dir that was added by log replay */
     if (!is_complete())
       return;
-    bloom = new bloom_filter(100, 0.05, 0);
+    unsigned size = get_num_head_items() + get_num_snap_items();
+    if (size < 100) size = 100;
+    bloom = new bloom_filter(size, 1.0 / size, 0);
   }
   /* This size and false positive probability is completely random.*/
   bloom->insert(dn->name.c_str(), dn->name.size());