]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: make Extent deleter as independent disposer
authorxie xingguo <xie.xingguo@zte.com.cn>
Fri, 11 Nov 2016 03:05:05 +0000 (11:05 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Fri, 11 Nov 2016 05:53:16 +0000 (13:53 +0800)
Duplicated definition of lambas of same function is not good.
Also switching ExtentMap::rm() to use the new disposer to
keep pace with others.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueStore.h

index d165a139baf6fd2f270072fb833143bfdae8a545..faba829638af29c0babdbc8e2cc785ba5ea7c9a7 100644 (file)
@@ -621,13 +621,17 @@ public:
 
     bool needs_reshard = false;   ///< true if we must reshard
 
+    struct DeleteDisposer {
+      void operator()(Extent *e) { delete e; }
+    };
+
     ExtentMap(Onode *o);
     ~ExtentMap() {
-      extent_map.clear_and_dispose([&](Extent *e) { delete e; });
+      extent_map.clear_and_dispose(DeleteDisposer());
     }
 
     void clear() {
-      extent_map.clear_and_dispose([&](Extent *e) { delete e; });
+      extent_map.clear_and_dispose(DeleteDisposer());
       shards.clear();
       inline_bl.clear();
       needs_reshard = false;
@@ -716,9 +720,7 @@ public:
 
     /// remove (and delete) an Extent
     void rm(extent_map_t::iterator p) {
-      Extent *e = &*p;
-      extent_map.erase(p);
-      delete e;
+      extent_map.erase_and_dispose(p, DeleteDisposer());
     }
 
     bool has_any_lextents(uint64_t offset, uint64_t length);