mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
maple_tree: don't use MAPLE_ARANGE64_META_MAX to indicate no gap
Patch series "Improve the validation for maple tree and some cleanup", v2. This patch (of 7): 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. Link: https://lkml.kernel.org/r/20230711035444.526-1-zhangpeng.00@bytedance.com Link: https://lkml.kernel.org/r/20230711035444.526-3-zhangpeng.00@bytedance.com Signed-off-by: Peng Zhang <zhangpeng.00@bytedance.com> Reviewed-by: Liam R. Howlett <Liam.Howlett@oracle.com> Tested-by: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
86aa6998ad
commit
d695c30a8c
@ -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) */
|
||||
|
||||
|
@ -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 @@ ascend:
|
||||
|
||||
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 {
|
||||
|
Loading…
Reference in New Issue
Block a user