]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: implements "fast-track" to insert records into bluestore_extent_ref_map_t
authorIgor Fedotov <ifedotov@mirantis.com>
Tue, 28 Jun 2016 13:09:46 +0000 (16:09 +0300)
committerIgor Fedotov <ifedotov@mirantis.com>
Mon, 18 Jul 2016 16:06:35 +0000 (19:06 +0300)
Signed-off-by: Igor Fedotov <ifedotov@mirantis.com>
src/os/bluestore/bluestore_types.h

index 0948e937650f43b8f1f7b314afe7051e9131ea68..5171ed35de5f2065eced1a6ba1d79d98b4c41a11 100644 (file)
@@ -120,6 +120,14 @@ struct bluestore_extent_ref_map_t {
     return ref_map.empty();
   }
 
+  //raw reference insertion that assumes no conflicts/interference with the existing references
+  void fill(uint32_t offset, uint32_t len, int refs = 1) {
+    auto p = ref_map.insert(
+        map<uint32_t,record_t>::value_type(offset,
+                                           record_t(len, refs))).first;
+    _maybe_merge_left(p);
+  }
+
   void get(uint32_t offset, uint32_t len);
   void put(uint32_t offset, uint32_t len, vector<bluestore_pextent_t> *release);