* Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> [230707 06:11]: > Do not use a special offset to indicate that there is no gap. When there > is no gap, offset can point to any valid slots because its gap is 0. > > Signed-off-by: Peng Zhang <zhangpeng.00@xxxxxxxxxxxxx> Reviewed-by: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx> > --- > include/linux/maple_tree.h | 2 -- > lib/maple_tree.c | 13 ++----------- > 2 files changed, 2 insertions(+), 13 deletions(-) > > diff --git a/include/linux/maple_tree.h b/include/linux/maple_tree.h > index e18ecbefc7f7..4e004d86c780 100644 > --- a/include/linux/maple_tree.h > +++ b/include/linux/maple_tree.h > @@ -29,14 +29,12 @@ > #define MAPLE_NODE_SLOTS 31 /* 256 bytes including ->parent */ > #define MAPLE_RANGE64_SLOTS 16 /* 256 bytes */ > #define MAPLE_ARANGE64_SLOTS 10 /* 240 bytes */ > -#define MAPLE_ARANGE64_META_MAX 15 /* Out of range for metadata */ > #define MAPLE_ALLOC_SLOTS (MAPLE_NODE_SLOTS - 1) > #else > /* 32bit sizes */ > #define MAPLE_NODE_SLOTS 63 /* 256 bytes including ->parent */ > #define MAPLE_RANGE64_SLOTS 32 /* 256 bytes */ > #define MAPLE_ARANGE64_SLOTS 21 /* 240 bytes */ > -#define MAPLE_ARANGE64_META_MAX 31 /* Out of range for metadata */ > #define MAPLE_ALLOC_SLOTS (MAPLE_NODE_SLOTS - 2) > #endif /* defined(CONFIG_64BIT) || defined(BUILD_VDSO32_64) */ > > diff --git a/lib/maple_tree.c b/lib/maple_tree.c > index f55e59bd9122..6a8982146338 100644 > --- a/lib/maple_tree.c > +++ b/lib/maple_tree.c > @@ -1610,8 +1610,6 @@ ma_max_gap(struct maple_node *node, unsigned long *gaps, enum maple_type mt, > * mas_max_gap() - find the largest gap in a non-leaf node and set the slot. > * @mas: The maple state. > * > - * If the metadata gap is set to MAPLE_ARANGE64_META_MAX, there is no gap. > - * > * Return: The gap value. > */ > static inline unsigned long mas_max_gap(struct ma_state *mas) > @@ -1628,9 +1626,6 @@ static inline unsigned long mas_max_gap(struct ma_state *mas) > node = mas_mn(mas); > MAS_BUG_ON(mas, mt != maple_arange_64); > offset = ma_meta_gap(node, mt); > - if (offset == MAPLE_ARANGE64_META_MAX) > - return 0; > - > gaps = ma_gaps(node, mt); > return gaps[offset]; > } > @@ -1662,10 +1657,7 @@ static inline void mas_parent_gap(struct ma_state *mas, unsigned char offset, > ascend: > MAS_BUG_ON(mas, pmt != maple_arange_64); > meta_offset = ma_meta_gap(pnode, pmt); > - if (meta_offset == MAPLE_ARANGE64_META_MAX) > - meta_gap = 0; > - else > - meta_gap = pgaps[meta_offset]; > + meta_gap = pgaps[meta_offset]; > > pgaps[offset] = new; > > @@ -1678,7 +1670,6 @@ static inline void mas_parent_gap(struct ma_state *mas, unsigned char offset, > > ma_set_meta_gap(pnode, pmt, offset); > } else if (new < meta_gap) { > - meta_offset = 15; > new = ma_max_gap(pnode, pgaps, pmt, &meta_offset); > ma_set_meta_gap(pnode, pmt, meta_offset); > } > @@ -2076,7 +2067,7 @@ static inline void mab_mas_cp(struct maple_big_node *b_node, > end = j - 1; > if (likely(!ma_is_leaf(mt) && mt_is_alloc(mas->tree))) { > unsigned long max_gap = 0; > - unsigned char offset = 15; > + unsigned char offset = 0; > > gaps = ma_gaps(node, mt); > do { > -- > 2.20.1 >