On 2022/09/20 0:10, Tao Liu wrote: > Patchset [1] introduces maple tree data structure for linux, and the > modification on mm subsystem. > > The main impact on crash utility, is the modification on vm_area_struct. > Patch [2][3] removed the rbtree and linked list iteration of > vm_area_struct, making it impossible for crash to iterate vma > in the traditional way. For example, we can observe the failing > of crash cmd vm/fuser on kernel which has integrated with patchset [1]. > > This patchset deals with the issue by porting and adapting > kernel's maple tree vma iteration code to crash utility. It has been > tested on linux-next-next-20220914 [4]. > > Patch 1: the pure copy-and-paste work, extracting related kernel > structures, functions, constants to crash. > Patch 2: minimal code modification for crash adaption, kernel > structures are kept for member resolving. > Patch 3: modification on crash memory.c to use the maple vma > iteration. > > The idea is to make patch 1-3 a POC work. > > Patch 4: Get rid of kernel structures by rewriting the structure > member resolving code into the crash way, aka change > "node->member" into "readmem(node) and OFFSET(member)" > Patch 5: print the added variables of offset/size table > Patch 6: Get rid of the compiling-time assgined arrays. > > Patch 4-6 will make the POC work formal for use. Thank you for working on this! and sorry for the delay. The patchset on the whole looks good and no problem was detected so far at my end. Some comments below and inline. - Ideally it's better also for "tree" command to support the maple tree like "tree -t maple", is it possible? It's ok at all to do this later, but the maple tree looks too complicated to me to be supported fully by the tree command.. If it looks possible, it might be better to have some preparation at this point. - Please fix the compilation warnings with "make clean ; make warn". Thanks, Kazu > > > [1]: https://lore.kernel.org/all/20220906194824.2110408-1-Liam.Howlett@xxxxxxxxxx/ > [2]: https://github.com/oracle/linux-uek/commit/d19703645b80abe35dff1a88449d074b0b5b1bb1 > [3]: https://github.com/oracle/linux-uek/commit/91dee01f1ebb6b6587463b6ee6f7bbc4965f91d5 > [4]: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/snapshot/linux-next-next-20220914.tar.gz > > Tao Liu (6): > Port linux maple tree related files to crash > Maple tree kernel code modification for step 1 > Introduce maple tree vma iteration to memory.c > Maple tree kernel code modification for step 2 > Dump maple tree offset variables by help -o > Remove mt_slots and mt_pivots array assignment > > Makefile | 12 +- > defs.h | 19 ++ > maple_tree.c | 824 +++++++++++++++++++++++++++++++++++++++++++++++ > maple_tree.h | 109 +++++++ > maple_tree_vma.h | 34 ++ > memory.c | 315 ++++++++++-------- > symbols.c | 34 ++ > xarray.h | 70 ++++ > 8 files changed, 1285 insertions(+), 132 deletions(-) > create mode 100644 maple_tree.c > create mode 100644 maple_tree.h > create mode 100644 maple_tree_vma.h > create mode 100644 xarray.h > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki