Re: [RFC] [PATCH 1/6] Port linux maple tree related files to crash

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022/09/20 0:10, Tao Liu wrote:
> There are 2 ways to iterate vm_area_struct: 1) by rbtree,
> aka vma.vm_rb; 2) by linked list, aka vma.vm_prev/next.
> However for linux maple tree patch[1][2], vm_rb and vm_prev/next
> are removed from vm_area_struct. For memory.c:vm_area_dump
> of crash, it mainly uses linked list as a way of vma iteration,
> which will not work for this case. So maple tree iteration
> need to be ported to crash.
> 
> For crash, currently it only iteratively read the maple tree,
> no more rcu safe or maple tree modification features
> needed. So we only port a subset of kernel maple tree
> features.
> 
> This patch mainly ports for_each_vma() macro, and all its
> dependencies from kernel source[3] to crash, to enable crash
> maple tree vma iteration:
> 
>      maple_tree_vma.h: The interface of maple tree vma iteration.
>      maple_tree.c: Maple tree main implementation.
>      maple_tree.h: Maple tree constants and structures.
>      xarray.h: Maple tree of xarray dependency.

Is it possible to put the other two header files into the maple_tree.h?

> 
> [1]: https://github.com/oracle/linux-uek/commit/d19703645b80abe35dff1a88449d074b0b5b1bb1
> [2]: https://github.com/oracle/linux-uek/commit/91dee01f1ebb6b6587463b6ee6f7bbc4965f91d5
> [3]: https://github.com/oracle/linux-uek, maple/mainline branch

This code looks a bit old, e.g. the following two lines are not found
in the current mm-stable [1], though the maple tree will come soon
mainline.

typedef struct maple_enode *maple_enode; /* encoded node */
typedef struct maple_pnode *maple_pnode; /* parent node */

[1] https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git

> 
> Signed-off-by: Tao Liu <ltao@xxxxxxxxxx>
> ---
>   maple_tree.c     | 736 +++++++++++++++++++++++++++++++++++++++++++++++
>   maple_tree.h     | 176 ++++++++++++
>   maple_tree_vma.h |  31 ++
>   xarray.h         |  70 +++++
>   4 files changed, 1013 insertions(+)
>   create mode 100644 maple_tree.c
>   create mode 100644 maple_tree.h
>   create mode 100644 maple_tree_vma.h
>   create mode 100644 xarray.h
> 
> diff --git a/maple_tree.c b/maple_tree.c
> new file mode 100644
> index 0000000..a7db8fa
> --- /dev/null
> +++ b/maple_tree.c
> @@ -0,0 +1,736 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Maple Tree implementation
> + * Copyright (c) 2018-2022 Oracle Corporation
> + * Authors: Liam R. Howlett <Liam.Howlett@xxxxxxxxxx>
> + * 	    Matthew Wilcox <willy@xxxxxxxxxxxxx>

For the copied parts, please add their kernel file path like
"This code comes from lib/maple_tree.c".

Thanks,
Kazu
--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux