]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/seastore: add extent map tree 36059/head
authorchunmei-liu <chunmei.liu@intel.com>
Mon, 24 Aug 2020 23:22:53 +0000 (16:22 -0700)
committerchunmei-liu <chunmei.liu@intel.com>
Tue, 1 Sep 2020 00:26:55 +0000 (17:26 -0700)
commit44320a0d0c5454ca5c869d8c6c7f393c06f44f24
treeb5663c7fd32bba27172810106ff02f4791762c3a
parentd83dc481dc0e4f7f70d5c83629dc6d711af544e0
crimson/seastore: add extent map tree

  add extentmap b-tree implementation.

  extentmap root is not stored in extentmap manager. only stored in
onode leaf.

  The transactions under SeaStore is fully isolated with each other,
  and can be failed due to potential conflicts.

  If extentmap manager store the tree root, will cause the following
issues:
  1. The updated extmap_root with depth/laddr can be seen by other transactions,
     which is not valid before the transaction is submitted successfully;
  2. The updated extmap_root needs to be reverted if the transaction is failed;

  imbedded ceph_le64 in laddr_le_t, and provide operator= in laddr_le_t
  in case allow ceph_lexx to be key in fixed_kv_node_layout.h

Signed-off-by: chunmei-liu <chunmei.liu@intel.com>
14 files changed:
src/crimson/os/seastore/CMakeLists.txt
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/extentmap_manager.cc [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager.h [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager/btree/btree_extentmap_manager.cc [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager/btree/btree_extentmap_manager.h [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager/btree/extentmap_btree_node.h [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager/btree/extentmap_btree_node_impl.cc [new file with mode: 0644]
src/crimson/os/seastore/extentmap_manager/btree/extentmap_btree_node_impl.h [new file with mode: 0644]
src/crimson/os/seastore/lba_manager/btree/lba_btree_node_impl.h
src/crimson/os/seastore/seastore_types.cc
src/crimson/os/seastore/seastore_types.h
src/test/crimson/seastore/CMakeLists.txt
src/test/crimson/seastore/test_extmap_manager.cc [new file with mode: 0644]