From 1fa4c11b1ba26be40d9ffb643649d5fc58105462 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 7 Jul 2020 11:38:53 -0700 Subject: [PATCH] crimson/os/seastore/lba_manager/btree: move BtreeLBAPin to btree_range_pin.h Signed-off-by: Samuel Just --- .../lba_manager/btree/btree_range_pin.h | 49 +++++++++++++++++++ .../lba_manager/btree/lba_btree_node_impl.h | 39 +-------------- 2 files changed, 50 insertions(+), 38 deletions(-) create mode 100644 src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h diff --git a/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h b/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h new file mode 100644 index 0000000000000..0c9a5fdd65dac --- /dev/null +++ b/src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h @@ -0,0 +1,49 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#pragma once + +#include "crimson/os/seastore/cached_extent.h" +#include "crimson/os/seastore/seastore_types.h" + +namespace crimson::os::seastore::lba_manager::btree { + +/* BtreeLBAPin + * + * References leaf node + * + * TODO: does not at this time actually keep the relevant + * leaf resident in memory. This is actually a bit tricky + * as we can mutate and therefore replace a leaf referenced + * by other, uninvolved but cached extents. Will need to + * come up with some kind of pinning mechanism that handles + * that well. + */ +struct BtreeLBAPin : LBAPin { + paddr_t paddr; + laddr_t laddr = L_ADDR_NULL; + extent_len_t length = 0; + unsigned refcount = 0; + +public: + BtreeLBAPin( + paddr_t paddr, + laddr_t laddr, + extent_len_t length) + : paddr(paddr), laddr(laddr), length(length) {} + + extent_len_t get_length() const final { + return length; + } + paddr_t get_paddr() const final { + return paddr; + } + laddr_t get_laddr() const final { + return laddr; + } + LBAPinRef duplicate() const final { + return LBAPinRef(new BtreeLBAPin(*this)); + } +}; + +} diff --git a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h index 716ce458eeeb5..73cc452dedf35 100644 --- a/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h +++ b/src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h @@ -18,6 +18,7 @@ #include "crimson/os/seastore/cache.h" #include "crimson/os/seastore/cached_extent.h" #include "crimson/os/seastore/lba_manager/btree/lba_btree_node.h" +#include "crimson/os/seastore/lba_manager/btree/btree_range_pin.h" namespace crimson::os::seastore::lba_manager::btree { @@ -431,42 +432,4 @@ struct LBALeafNode }; using LBALeafNodeRef = TCachedExtentRef; -/* BtreeLBAPin - * - * References leaf node - * - * TODO: does not at this time actually keep the relevant - * leaf resident in memory. This is actually a bit tricky - * as we can mutate and therefore replace a leaf referenced - * by other, uninvolved but cached extents. Will need to - * come up with some kind of pinning mechanism that handles - * that well. - */ -struct BtreeLBAPin : LBAPin { - paddr_t paddr; - laddr_t laddr = L_ADDR_NULL; - extent_len_t length = 0; - unsigned refcount = 0; - -public: - BtreeLBAPin( - paddr_t paddr, - laddr_t laddr, - extent_len_t length) - : paddr(paddr), laddr(laddr), length(length) {} - - extent_len_t get_length() const final { - return length; - } - paddr_t get_paddr() const final { - return paddr; - } - laddr_t get_laddr() const final { - return laddr; - } - LBAPinRef duplicate() const final { - return LBAPinRef(new BtreeLBAPin(*this)); - } -}; - } -- 2.39.5