From: Aran85 Date: Mon, 17 May 2021 10:32:11 +0000 (+0800) Subject: crimson/seastore: add string_kv_node_layout diagrams X-Git-Tag: v17.1.0~1945^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f426a11826f66dab262d3a4ca2aebe9f218a9b39;p=ceph.git crimson/seastore: add string_kv_node_layout diagrams Signed-off-by: Zengran Zhang --- diff --git a/src/crimson/os/seastore/omap_manager/btree/string_kv_node_layout.h b/src/crimson/os/seastore/omap_manager/btree/string_kv_node_layout.h index aea7487ec6e24..bf8461cc3b1d6 100644 --- a/src/crimson/os/seastore/omap_manager/btree/string_kv_node_layout.h +++ b/src/crimson/os/seastore/omap_manager/btree/string_kv_node_layout.h @@ -267,6 +267,24 @@ namespace crimson::os::seastore::omap_manager { * and related methods. * * Also included are helpers for doing splits and merges as for a btree. + * + * layout diagram: + * + * # <----------------------------- node range --------------------------------------------> # + * # #<~># free space # + * # <------------- left part -----------------------------> # <~# <----- right keys -----> # + * # # <------------ left keys --------------> #~> # # + * # # keys [2, n) |<~># #<~>| right keys [2, n) # + * # # <--- key 0 ----> | <--- key 1 ----> | # # | <- k1 -> | <-- k0 --> # + * # # | | # # | | # + * # num_ | meta # key | key | val | key | key | val | # # | key | key # + * # keys | depth # off | len | laddr| off | len | laddr| # # | buff | buff # + * # | # 0 | 0 | 0 | 1 | 1 | 1 |...#...#...| key 1 | key 0 # + * # | | | <- off --+----------> # + * # | | ^ | <- off --> # + * | | | ^ + * | +----------------------------------+ | + * +----------------------------------------------------------------+ */ class StringKVInnerNodeLayout { char *buf = nullptr; @@ -866,6 +884,27 @@ private: }; +/** + * StringKVLeafNodeLayout + * + * layout diagram: + * + * # <----------------------------- node range -------------------------------------------------> # + * # #<~># free space # + * # <------------- left part ---------------------------> # <~# <----- right key-value pairs --> # + * # # <------------ left keys ------------> #~> # # + * # # keys [2, n) |<~># #<~>| right kvs [2, n) # + * # # <--- key 0 ---> | <--- key 1 ---> | # # | <-- kv 1 --> | <-- kv 0 --> # + * # # | | # # | | # + * # num_ | meta # key | key | val | key | key | val | # # | key | val | key | val # + * # keys | depth # off | len | len | off | len | len | # # | buff | buff | buff | buff # + * # # 0 | 0 | 0 | 1 | 1 | 1 |...#...#...| key 1 | val 1| key 0 | val 0 # + * # | | | <--- off ----+-------------> # + * # | | ^ | <--- off ---> # + * | | | ^ + * | +-----------------------------------+ | + * +-------------------------------------------------------------------+ + */ class StringKVLeafNodeLayout { char *buf = nullptr;