diff options
| author | Liam R. Howlett <[email protected]> | 2023-08-04 12:59:47 -0400 |
|---|---|---|
| committer | Andrew Morton <[email protected]> | 2023-08-21 13:37:41 -0700 |
| commit | 72bcf4aa86ece2b49fbdc7fe83d3a05c7ebcfc97 (patch) | |
| tree | c8dd0a0c7c717b7d96c722fd35b4ed10967b28f5 /tools/perf/scripts/python/powerpc-hcalls.py | |
| parent | 83d97f620f611ab3fbf2de585bf34bd9dab513c2 (diff) | |
maple_tree: reorder replacement of nodes to avoid live lock
Replacing nodes may cause a live lock-up if CPU resources are saturated by
write operations on the tree by continuously retrying on dead nodes. To
avoid the continuous retry scenario, ensure the new node is inserted into
the tree prior to marking the old data as dead. This will define a window
where old and new data is swapped.
When reusing lower level nodes, ensure the parent pointer is updated after
the parent is marked dead. This ensures that the child is still reachable
from the top of the tree, but walking up to a dead node will result in a
single retry that will start a fresh walk from the top down through the
new node.
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Liam R. Howlett <[email protected]>
Cc: Matthew Wilcox (Oracle) <[email protected]>
Cc: Paul E. McKenney <[email protected]>
Cc: Suren Baghdasaryan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/powerpc-hcalls.py')
0 files changed, 0 insertions, 0 deletions