[Makedumpfile Patch v2 7/7] mem-usage: allow to work only with -f for kernel version < 4.11
Pratyush Anand
panand at redhat.com
Wed Mar 1 21:48:00 PST 2017
Hi Atsushi,
On Thursday 02 March 2017 10:19 AM, Atsushi Kumagai wrote:
> Hello Pratyush,
>
>> PT_LOAD of kcore does not have valid p_paddr values for kernel version
>> less that v4.11. Therefore, older kernel will no long work for mem-usage
>> with current makedumpfile code. They can only work when they are patched
>> with fix to "update physical address for kcore ram and text".
>>
>> This patch fixes the makedumpfile so that it does not allow to work
>> older kernel for --mem-usage until someone is sure that kernel is
>> rightly patched and so uses -f in command line.
>>
>> Signed-off-by: Pratyush Anand <panand at redhat.com>
>> ---
>> makedumpfile.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/makedumpfile.c b/makedumpfile.c
>> index 3b8e9810468d..bf006ea5dd5f 100644
>> --- a/makedumpfile.c
>> +++ b/makedumpfile.c
>> @@ -11269,6 +11269,12 @@ main(int argc, char *argv[])
>> MSG("Try `makedumpfile --help' for more information.\n");
>> goto out;
>> }
>> + if (info->kernel_version < KERNEL_VERSION(4, 11, 0) &&
>> + !info->flag_force) {
>> + MSG("mem-usage not supported for this kernel.\n");
>> + MSG("You can try with -f if your kernel's kcore has valid p_paddr\n");
>> + return COMPLETED;
>> + }
>
> Should use "goto out" to prevent memory leaks since some heap blocks are
> allocated at the head of main().
OK
>
> BTW, the descriptions of -f option in man and print_usage() don't mention this usage:
>
> -f Force existing DUMPFILE to be overwritten.
> Example:
> # makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
> This command overwrites DUMPFILE even if it already exists.
>
> so they should be updated.
Does following looks fine to you?
$ makedumpfile --help | grep -A3 "\-f"
[-f]:
Overwrite DUMPFILE even if it already exists
Force mem-usage to work with older kernel as well.
$ man makedumpfile | grep -w "\-f " -A6
-f Force existing DUMPFILE to be overwritten and mem-usage
to work with older kernel as well.
Example:
# makedumpfile -f -d 31 -x vmlinux /proc/vmcore dumpfile
This command overwrites DUMPFILE even if it already exists.
# makedumpfile -f --mem-usage /proc/kcore
Kernel version lesser than v4.11 will not work with
--mem-usage functionality until it has been patched with upstream commit
464920104bf7. Therefore if you have patched your older
kernel then use -f.
Thanks for the review.
~Pratyush
More information about the kexec
mailing list