]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/onode-staged-tree: implement an extensive Value framework
authorYingxin Cheng <yingxin.cheng@intel.com>
Fri, 15 Jan 2021 06:35:20 +0000 (14:35 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Fri, 22 Jan 2021 05:43:07 +0000 (13:43 +0800)
commitcb8e4e2e20df98b0aae207640166c1a2f5ecaa67
treedd2c68566b8cf77b28153b4835d6eb3b244392aa
parent47f080dd8c58e7b09779ff3bf7df2eb6ae6d1183
crimson/onode-staged-tree: implement an extensive Value framework

The introduced Value/ValueDeltaRecorder classes are designed for a
concrete Onode implementation that supports:
* User defined value layout;
* Locate and read the value payload stored in the leaf node;
* Modify the value payload with transaction;
* Value specific delta encode, decode and replay;
* Pin the according leaf node when the Value is alive;
* (interface only) Extend and trim the value payload in tree;

The goal is to decouple the dependencis between the follow-up
onode-attrs/omap/extentmap integrations and the onode-staged-tree
on-going implementations.

There is one limitation currently, that we cannot guarantee any
alignment of the value payload due to the unaligned node layouts and
unaligned split operations.

See src/test/crimson/seastore/onode_tree/test_value.h for an example
implementation which is implemented for test and benchmark purposes.

Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
23 files changed:
src/crimson/os/seastore/CMakeLists.txt
src/crimson/os/seastore/onode_manager/staged-fltree/fwd.h
src/crimson/os/seastore/onode_manager/staged-fltree/node.cc
src/crimson/os/seastore/onode_manager/staged-fltree/node.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_delta_recorder.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_accessor.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_manager/seastore.cc
src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_mutable.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_impl.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_layout.h
src/crimson/os/seastore/onode_manager/staged-fltree/node_types.h
src/crimson/os/seastore/onode_manager/staged-fltree/stages/node_stage.h
src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h
src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage_types.h
src/crimson/os/seastore/onode_manager/staged-fltree/stages/sub_items_stage.cc
src/crimson/os/seastore/onode_manager/staged-fltree/stages/sub_items_stage.h
src/crimson/os/seastore/onode_manager/staged-fltree/tree.h
src/crimson/os/seastore/onode_manager/staged-fltree/tree_types.h [deleted file]
src/crimson/os/seastore/onode_manager/staged-fltree/tree_utils.h
src/crimson/os/seastore/onode_manager/staged-fltree/value.cc [new file with mode: 0644]
src/crimson/os/seastore/onode_manager/staged-fltree/value.h [new file with mode: 0644]
src/test/crimson/seastore/onode_tree/test_staged_fltree.cc
src/test/crimson/seastore/onode_tree/test_value.h [new file with mode: 0644]