]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/os/seastore/lba_manager: replace btree implementation 42901/head
authorSamuel Just <sjust@redhat.com>
Tue, 13 Jul 2021 02:02:18 +0000 (02:02 +0000)
committerSamuel Just <sjust@redhat.com>
Fri, 27 Aug 2021 02:10:45 +0000 (19:10 -0700)
commitdc4fe22f6b9bb692712104fa841731af0ef20090
tree7183e9f65cf0b97d53802f5028f486d6e44fe42d
parent150d2ee14b0967d002a9a1a30f466c2ef9da88c2
crimson/os/seastore/lba_manager: replace btree implementation

Replace previous implementation with one based around an internal
iterator interface.  Besides simplifying the implementation and
removing duplicate lookups in the allocation pathway, this implementation
should correct a design problem in the prior implementation wherein
LBALeafNode::find_hole couldn't see the first element of the subsequent
node and therefore assumed that there was one at get_meta().end.

This patch removes the btree logic from lba_btree_node_impl.* leaving
the LBAInternalNode and LBALeafNode layout in lba_btree_node.*.
lba_btree.h/cc now have the main btree update/query logic.

Signed-off-by: Samuel Just <sjust@redhat.com>
13 files changed:
src/crimson/os/seastore/CMakeLists.txt
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/lba_manager.h
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc
src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.h
src/crimson/os/seastore/lba_manager/btree/btree_range_pin.h
src/crimson/os/seastore/lba_manager/btree/lba_btree.cc [new file with mode: 0644]
src/crimson/os/seastore/lba_manager/btree/lba_btree.h [new file with mode: 0644]
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.cc [new file with mode: 0644]
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h
src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.cc [deleted file]
src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h [deleted file]
src/test/crimson/seastore/test_btree_lba_manager.cc