From 7cf1074d4ff76d7b1e7579b80c1399d9a5979295 Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Thu, 10 Apr 2025 14:19:39 -0400 Subject: [PATCH] try_rebalance converted Signed-off-by: Liam R. Howlett --- lib/maple_tree.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/lib/maple_tree.c b/lib/maple_tree.c index f6418ec2a2a6..d917744dc36a 100644 --- a/lib/maple_tree.c +++ b/lib/maple_tree.c @@ -3864,7 +3864,6 @@ static int mt_wr_split_data(struct ma_node_info *src, unsigned char node_off, part_off; struct ma_node_info *to; - state = sd->state; i = sd->len; /* Offset into the destination data where the insert ends */ @@ -3931,6 +3930,7 @@ static int mt_wr_split_data(struct ma_node_info *src, } i++; } while (node_off <= src->end); + sd->len = i; return i; } @@ -3951,8 +3951,7 @@ bool mas_wr_try_rebalance(struct ma_state *mas, struct ma_node_info *src, { struct ma_state tmp_mas; struct ma_node_info src2, parent, new_parent; - struct ma_node_state state[5]; - unsigned char split, max, i; + unsigned char split, max; bool left_store = false; /* @@ -4005,10 +4004,8 @@ try_right: /* The rebalance operation will succeed. */ sd->split = split; - sd->state = state; sd->new_end += src2.end + 1; - i = 0; if (left_store) { /* Left pushes data right. */ sd->insert = mas->offset; @@ -4019,9 +4016,8 @@ try_right: sd->insert = mas->offset + src2.end + 1; sd->offset = src2.end + 1; sd->space = split - src2.end; - state[i].info = &src2; - mns_mni_init(&state[i], left, 0, src2.end + 1); - i++; + sd->states[sd->len].info = &src2; + mns_mni_init(&sd->states[sd->len], left, 0, src2.end + 1); sd->len++; } @@ -4030,14 +4026,15 @@ try_right: * There can also be a split between nodes that may happen at these * boundaries, or elsewhere. */ - i = mt_wr_split_data(src, left, right, ma_part, - state, i, sd); + mt_wr_split_data(src, left, right, ma_part, + sd->states, sd->len, sd); if (left_store) { - state[i].info = &src2; - mns_mni_init(&state[i++], right, 0, src2.end + 1); + sd->states[sd->len].info = &src2; + mns_mni_init(&sd->states[sd->len], right, 0, src2.end + 1); + sd->len++; } - mns_assemble(state, i); + mns_assemble(sd->states, sd->len); mni_finalise(left); mni_finalise(right); mni_node_part_init(ma_part, left, right); -- 2.49.0