]> www.infradead.org Git - users/jedix/linux-maple.git/commit
maple_tree: Introduce maple_copy node and use it in
authorLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 6 Oct 2025 19:12:08 +0000 (15:12 -0400)
committerLiam R. Howlett <Liam.Howlett@oracle.com>
Mon, 6 Oct 2025 20:06:26 +0000 (16:06 -0400)
commit7e8de82c25f321eb6b4783f044c4736a3a77d4dd
treed6c981aeccb2062c3989c096393ed9d1d1fc03e8
parent80328fe8b7e93852afc2045d14a02390c3ee37a4
maple_tree: Introduce maple_copy node and use it in
mas_spanning_rebalance()

Introduce an internal-memory only node type called maple_copy to
facilitate internal copy operations.  Use it in mas_spanning_rebalance()
for just the leaf nodes.  Initially, the maple_copy node is used to
configure the source nodes and copy the data into the big_node.

The maple_copy contains a list of source entries with start and end
offsets.  One of the maple_copy entries can be itself with an offset of
0 to 2, representing the data where the store partially overwrites
entries, or fully overwrites the entry.  The side effect is that the
source nodes no longer have to worry about partially copying the
existing offset if it is not fully overwritten.

This is in preparation of removal of the maple big_node, but for the
time being the data is copied to the big node to limit the change size.

Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com>
include/linux/maple_tree.h
lib/maple_tree.c