[Makedumpfile Patch v3 2/7] initial(): call cach_init() a bit early
Pratyush Anand
panand at redhat.com
Wed Jul 19 04:20:42 PDT 2017
Hi Atsushi,
On Wednesday 19 July 2017 01:16 PM, Atsushi Kumagai wrote:
> Hello Pratyush,
>
>> Call cach_init() before get_kcore_dump_loads(), because latter uses
>> cache_search().
>>
>> Call path is like this :
>> get_kcore_dump_loads() -> process_dump_load() -> vaddr_to_paddr() ->
>> vtop4_x86_64() -> readmem() -> cache_search()
>
> I found that the current cach_init() is too early, cache_init() should be
> called after fallback_to_current_page_size() for older kernel
> which doesn't have VMCOREINFO.
> Could you confirm that the patch below is fine with you ?
Its fine and works.
>
> Thanks,
> Atsushi Kumagai
>
> From: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com>
> Date: Wed, 19 Jul 2017 15:05:58 +0900
> Subject: [PATCH] Fix the regression caused by moving cache_init() earlier
>
> info->page_size should be set before calling cache_init() since it
> allocates some buffers based on info->page_size. However, cache_init()
> was moved before fallback_to_current_page_size() while it set
> info->page_size for older kernel which doesn't have VMCOREINFO.
>
> This patch moves cache_init() after fallback_to_current_page_size()
> and reverts the commit: b98e6e0d2a(sadump: set info->page_size before cache_init())
>
> Signed-off-by: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com>
> ---
> makedumpfile.c | 28 ++++++++++++++++------------
> 1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/makedumpfile.c b/makedumpfile.c
> index a3f0697..f85003a 100644
> --- a/makedumpfile.c
> +++ b/makedumpfile.c
> @@ -3905,15 +3905,6 @@ initial(void)
> if (!get_value_for_old_linux())
> return FALSE;
>
> - if (info->flag_sadump && !set_page_size(sadump_page_size()))
> - return FALSE;
> -
> - if (!is_xen_memory() && !cache_init())
> - return FALSE;
> -
> - if (info->flag_mem_usage && !get_kcore_dump_loads())
> - return FALSE;
> -
> if (info->flag_refiltering) {
> if (info->flag_elf_dumpfile) {
> MSG("'-E' option is disable, ");
> @@ -3936,6 +3927,9 @@ initial(void)
> return FALSE;
> }
>
> + if (!set_page_size(sadump_page_size()))
> + return FALSE;
> +
> if (!sadump_initialize_bitmap_memory())
> return FALSE;
>
> @@ -3949,9 +3943,7 @@ initial(void)
> * postponed until debug information becomes
> * available.
> */
> -
> - } else if (!get_phys_base())
> - return FALSE;
> + }
>
> out:
> if (!info->page_size) {
> @@ -3962,6 +3954,18 @@ out:
> if (!fallback_to_current_page_size())
> return FALSE;
> }
> +
> + if (!is_xen_memory() && !cache_init())
> + return FALSE;
> +
> + if (info->flag_mem_usage && !get_kcore_dump_loads())
> + return FALSE;
> +
> + if (!info->flag_refiltering && !info->flag_sadump) {
> + if (!get_phys_base())
> + return FALSE;
> + }
> +
> if (!get_max_mapnr())
> return FALSE;
>
>
--
Regards
Pratyush
More information about the kexec
mailing list