[PATCH makedumpfile v2 0/9] Improvements to makedumpfile extensions, plus userspace stack tracing extension
Stephen Brennan
stephen.s.brennan at oracle.com
Thu Aug 20 16:31:05 PDT 2026
Hello all,
This is v2 of my series of improvements for makedumpfile extensions.
v1 can be found here: https://lore.kernel.org/kexec/20260714004550.3698175-1-stephen.s.brennan@oracle.com/
There have only been a few changes from v1:
- Updated extension/sample.c to use the new API in patch 3.
- Reordered and reworded the extension retained pages statistic per Tao's
suggestion, so that it is more clear.
- Included a more complete commit message in patch 7.
- In patch 1, removed the "nr_pages = 1" when extensions return PG_EXCLUDE.
- Significantly reworded patch 1's commit message to explain the different cases
and the alternative approach.
Notable improvements in the "userstack.c" extension are:
- Leverage "detect_cycle.h" API to apply Brent's algorithm for cycle detection
in linked list iteration, to avoid infinite loops while iterating tasks &
threads on corrupt vmcores.
- Set a limit to the number of retained anon_vma entries, to avoid hitting OOM
issues in case of a huge vmcore or a bug in the extension.
As discussed on v1, the final two patches containing the extensions are not to
be merged. I will publish them in a Github repository as soon as I can get it
arranged with my employer. They are more for demonstration of the API and
continued sharing until the repository is available.
The major discussion on v1 was on patch 4, dealing with how extensions are
called, between:
(a) Extensions are called for all base pages, and their decisions may conflict
with the head page decision.
(b) Extensions are not called for tail pages, and the head page decision is used
instead.
As I explained in my last reply, I believe that (b) is still the best way. It is
less complex than (a). It is also more efficient, because makedumpfile today
skips processing many excluded tail pages, which adds up for large systems with
many huge pages. We do not have any extension which requires any policy more
complex than PG_INCLUDE_HEAD.
- elfheader requires PG_INCLUDE_HEAD
- userstack only uses PG_INCLUDE. I could imagine potentially wanting to include
just the sub-pages of compound pages that are actually used by the stack. But
it hasn't been necessary so far.
- amdgpu buffers may be compound pages but if they are, then the entire page
would be excluded.
I do have an implementation of (a) as I showed in the thread. If I'm wrong here,
I can always fall back to that.
Thank you,
Stephen
Stephen Brennan (9):
Do not call extensions for tail pages
Honor CFLAGS in extension/Makefile
Share page information with extension callbacks
Introduce a stat for pages retained by extension
Move page checks into makedumpfile.h
Simplify arguments for page checks
Add PG_INCLUDE_HEAD extension return status
Add userstack extension
Add elfheader extension
extension.c | 10 +-
extension.h | 10 +-
extensions/Makefile | 8 +-
extensions/elfheader.c | 93 +++++++++++
extensions/list.h | 106 ++++++++++++
extensions/sample.c | 2 +-
extensions/userstack.c | 351 ++++++++++++++++++++++++++++++++++++++++
extensions/vma_mtree.c | 140 ++++++++++++++++
extensions/vma_mtree.h | 7 +
extensions/vma_rbtree.c | 56 +++++++
extensions/vma_rbtree.h | 12 ++
makedumpfile.c | 189 +++++++++-------------
makedumpfile.h | 78 ++++++++-
13 files changed, 931 insertions(+), 131 deletions(-)
create mode 100644 extensions/elfheader.c
create mode 100644 extensions/list.h
create mode 100644 extensions/userstack.c
create mode 100644 extensions/vma_mtree.c
create mode 100644 extensions/vma_mtree.h
create mode 100644 extensions/vma_rbtree.c
create mode 100644 extensions/vma_rbtree.h
--
2.52.0
More information about the kexec
mailing list