commit 3ded8ffa79e7fd28c7d7b0236bf2a2f81e8e7ddd Author: Mahesh Salgaonkar Date: Fri Aug 19 17:02:49 2011 +0900 [PATCH v2 1/8] Add '--config' option to specify filter config file. This is an updated patch that introduces a small change which I missed in last posting. The change is, since the patch 5/8 have renamed filter.conf to makedumpfile.conf, replace all instances of filter.conf(8) to makedumpfile.conf(8) in makedumpfile(8) man page. Signed-off-by: Mahesh Salgaonkar Signed-off-by: Prerna Saxena diff -Nrup kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.8 kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.8 --- kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.8 2012-01-02 16:47:01.000000000 +0800 +++ kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.8 2012-01-02 16:47:09.000000000 +0800 @@ -6,6 +6,8 @@ makedumpfile \- make a small dumpfile of .br \fBmakedumpfile\fR \-F [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR .br +\fBmakedumpfile\fR [\fIOPTION\fR] \-x \fIVMLINUX\fR \-\-config \fIFILTERCONFIGFILE\fR \fIVMCORE\fR \fIDUMPFILE\fR +.br \fBmakedumpfile\fR \-R \fIDUMPFILE\fR .br \fBmakedumpfile\fR \-\-split [\fIOPTION\fR] [\-x \fIVMLINUX\fR|\-i \fIVMCOREINFO\fR] \fIVMCORE\fR \fIDUMPFILE1\fR \fIDUMPFILE2\fR [\fIDUMPFILE3\fR ..] @@ -55,6 +57,15 @@ compression support. The ELF format is r If a user wants to use GDB, \fIDUMPFILE\fR format has to be explicitly specified to be the ELF format. .PP +Apart from the exclusion of unnecessary pages mentioned above, makedumpfile +allows user to filter out targeted kernel data. The filter config file can +be used to specify kernel/module symbols and its members that need to be +filtered out through the erase command syntax. makedumpfile reads the filter +config and builds the list of memory addresses and its sizes after processing +filter commands. The memory locations that require to be filtered out are +then poisoned with character 'X' (58 in Hex). Refer to +\fBmakedumpfile.conf(8)\fR for file format. +.PP To analyze the first kernel's memory usage, makedumpfile can refer to \fIVMCOREINFO\fR instead of \fIVMLINUX\fR. \fIVMCOREINFO\fR contains the first kernel's information (structure size, field offset, etc.), and \fIVMCOREINFO\fR @@ -232,6 +243,13 @@ specified. # makedumpfile \-g vmcoreinfo \-x vmlinux .TP +\fB\-\-config\fR \fIFILTERCONFIGFILE\fR +Used in conjunction with \-x \fIVMLINUX\fR option, to specify the filter +config file \fIFILTERCONFIGFILE\fR that contains erase commands to filter out +desired kernel data from vmcore while creating \fIDUMPFILE\fR. For filter +command syntax please refer to \fBmakedumpfile.conf(8)\fR. + +.TP \fB\-F\fR Output the dump data in the flattened format to the standard output for transporting the dump data by SSH. @@ -474,5 +492,5 @@ Written by Masaki Tachibana, and Ken'ich .SH SEE ALSO .PP -crash(8), gdb(1), kexec(8) +crash(8), gdb(1), kexec(8), makedumpfile.conf(8) diff -Nrup kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.c kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.c --- kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.c 2012-01-02 16:47:01.000000000 +0800 +++ kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.c 2012-01-02 16:47:09.000000000 +0800 @@ -617,6 +617,11 @@ print_usage(void) MSG(" Creating DUMPFILE:\n"); MSG(" # makedumpfile [-c|-E] [-d DL] [-x VMLINUX|-i VMCOREINFO] VMCORE DUMPFILE\n"); MSG("\n"); + MSG(" Creating DUMPFILE with filtered kernel data specified through filter config\n"); + MSG(" file:\n"); + MSG(" # makedumpfile [-c|-E] [-d DL] -x VMLINUX --config FILTERCONFIGFILE VMCORE\n"); + MSG(" DUMPFILE\n"); + MSG("\n"); MSG(" Outputting the dump data in the flattened format to the standard output:\n"); MSG(" # makedumpfile -F [-c|-E] [-d DL] [-x VMLINUX|-i VMCOREINFO] VMCORE\n"); MSG("\n"); @@ -684,6 +689,11 @@ print_usage(void) MSG(" other system that is running the same first kernel. [-x VMLINUX] must\n"); MSG(" be specified.\n"); MSG("\n"); + MSG(" [--config FILTERCONFIGFILE]:\n"); + MSG(" Used in conjunction with -x VMLINUX option, to specify the filter config\n"); + MSG(" file that contains filter commands to filter out desired kernel data\n"); + MSG(" from vmcore while creating DUMPFILE.\n"); + MSG("\n"); MSG(" [-F]:\n"); MSG(" Output the dump data in the flattened format to the standard output\n"); MSG(" for transporting the dump data by SSH.\n"); @@ -7668,6 +7678,9 @@ check_param_for_creating_dumpfile(int ar if (info->flag_flatten && info->flag_split) return FALSE; + if (info->name_filterconfig && !info->name_vmlinux) + return FALSE; + if ((argc == optind + 2) && !info->flag_flatten && !info->flag_split) { /* @@ -7760,6 +7773,7 @@ static struct option longopts[] = { {"message-level", required_argument, NULL, 'm'}, {"vtop", required_argument, NULL, 'V'}, {"dump-dmesg", no_argument, NULL, 'M'}, + {"config", required_argument, NULL, 'C'}, {"help", no_argument, NULL, 'h'}, {0, 0, 0, 0} }; @@ -7790,6 +7804,9 @@ main(int argc, char *argv[]) case 'b': info->block_order = atoi(optarg); break; + case 'C': + info->name_filterconfig = optarg; + break; case 'c': info->flag_compress = 1; break; diff -Nrup kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.h kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.h --- kexec-tools-2.0.0.orig/makedumpfile-1.3.5/makedumpfile.h 2012-01-02 16:47:01.000000000 +0800 +++ kexec-tools-2.0.0/makedumpfile-1.3.5/makedumpfile.h 2012-01-02 16:47:09.000000000 +0800 @@ -856,6 +856,13 @@ struct DumpInfo { unsigned long vmemmap_end; /* + * Filter config file containing filter commands to filter out kernel + * data from vmcore. + */ + char *name_filterconfig; + FILE *file_filterconfig; + + /* * diskdimp info: */ int block_order;