mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
The maple tree node is overloaded to keep status as well as the active node. This, unfortunately, results in a re-walk on underflow or overflow. Since the maple state has room, the status can be placed in its own enum in the structure. Once an underflow/overflow is detected, certain modes can restore the status to active and others may need to re-walk just that one node to see the entry. The status being an enum has the benefit of detecting unhandled status in switch statements. [Liam.Howlett@oracle.com: fix comments about MAS_*] Link: https://lkml.kernel.org/r/20231106154124.614247-1-Liam.Howlett@oracle.com [Liam.Howlett@oracle.com: update forking to separate maple state and node] Link: https://lkml.kernel.org/r/20231106154551.615042-1-Liam.Howlett@oracle.com [Liam.Howlett@oracle.com: fix mas_prev() state separation code] Link: https://lkml.kernel.org/r/20231207193319.4025462-1-Liam.Howlett@oracle.com Link: https://lkml.kernel.org/r/20231101171629.3612299-9-Liam.Howlett@oracle.com Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Cc: Peng Zhang <zhangpeng.00@bytedance.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
||
|---|---|---|
| .. | ||
| generated | ||
| linux | ||
| trace/events | ||
| .gitignore | ||
| benchmark.c | ||
| bitmap.c | ||
| idr-test.c | ||
| iteration_check_2.c | ||
| iteration_check.c | ||
| linux.c | ||
| main.c | ||
| Makefile | ||
| maple.c | ||
| multiorder.c | ||
| regression.h | ||
| regression1.c | ||
| regression2.c | ||
| regression3.c | ||
| regression4.c | ||
| tag_check.c | ||
| test.c | ||
| test.h | ||
| xarray.c | ||