From 00988033452acdcb029ba5361474497e983cb810 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Wed, 8 Apr 2020 12:24:37 +0100 Subject: [PATCH] [thinp_*] Make mtree_ref_counter derive from ref_counter. Slight performance hit, but I'd rather everything was derived from ref_counter. Also implement it! Not sure why this wasn't done before. --- thin-provisioning/mapping_tree.cc | 12 ++++++++++-- thin-provisioning/mapping_tree.h | 7 ++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/thin-provisioning/mapping_tree.cc b/thin-provisioning/mapping_tree.cc index 5b69fe9..f23ec70 100644 --- a/thin-provisioning/mapping_tree.cc +++ b/thin-provisioning/mapping_tree.cc @@ -70,15 +70,23 @@ namespace thin_provisioning { } void - mtree_ref_counter::inc(block_address b) + mtree_ref_counter::set(block_address const &b, uint32_t rc) { + tm_.get_sm()->set_count(b, rc); } void - mtree_ref_counter::dec(block_address b) + mtree_ref_counter::inc(block_address const &b) { + tm_.get_sm()->inc(b); } + void + mtree_ref_counter::dec(block_address const &b) + { + tm_.get_sm()->dec(b); + } + //-------------------------------- void diff --git a/thin-provisioning/mapping_tree.h b/thin-provisioning/mapping_tree.h index ce88ba2..4475cf0 100644 --- a/thin-provisioning/mapping_tree.h +++ b/thin-provisioning/mapping_tree.h @@ -43,12 +43,13 @@ namespace thin_provisioning { static void pack(value_type const &value, disk_type &disk); }; - class mtree_ref_counter { + class mtree_ref_counter final : public ref_counter { public: mtree_ref_counter(transaction_manager &tm); - void inc(block_address b); - void dec(block_address b); + void set(block_address const &b, uint32_t rc); + void inc(block_address const &b); + void dec(block_address const &b); private: transaction_manager &tm_;