From b32cbcd78f87a7ecc6f83d80ab1f8b0d1c6886d1 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Fri, 11 Nov 2016 11:05:05 +0800 Subject: [PATCH] os/bluestore: make Extent deleter as independent disposer 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 --- src/os/bluestore/BlueStore.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index d165a139baf..faba829638a 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -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); -- 2.39.5