[Patch v3 3/7] preparation functions for parsing vmcoreinfo

bhe at redhat.com bhe at redhat.com
Tue Aug 12 02:46:23 PDT 2014


On 08/01/14 at 07:12am, Atsushi Kumagai wrote:
> >diff --git a/makedumpfile.c b/makedumpfile.c
> >index 220570e..78aa7a5 100644
> >--- a/makedumpfile.c
> >+++ b/makedumpfile.c
> >@@ -681,6 +681,10 @@ get_kernel_version(char *release)
> > 	int32_t version;
> > 	long maj, min, rel;
> > 	char *start, *end;
> >+	static int done = 0;
> >+
> >+	if (done)
> >+		return info->kernel_version;
> 
> This function just convert the argument as string into
> a number, it shouldn't be affected by external factors.
> 
> You should use info->kernel_version in the caller side if
> you want to avoid duplicate calling of this function, but
> I think it's unnecessary since this function is small.

In show_mem_usage() implementaion, the page_offset is needed before
initial() calling because the dumpable elf program loads have ot be
prepared before that. However in current commited code, the page_offset
is got in initial() when call check_release().

So I have to get it in advance by this way. Then the
get_kernel_version() can be reused in this way. Anyway, by this I
needn't change the code in initial().

If use info->kernel_version directly before initial() calling, it's
still zero.

> 
> >
> > 	/*
> > 	 * This method checks that vmlinux and vmcore are same kernel version.
> >@@ -706,6 +710,9 @@ get_kernel_version(char *release)
> > 		MSG("The kernel version is not supported.\n");
> > 		MSG("The created dumpfile may be incomplete.\n");
> > 	}
> >+
> >+	done = 1;
> >+
> > 	return version;
> > }
> >
> >@@ -9062,6 +9069,22 @@ int is_crashkernel_mem_reserved(void)
> >         return !!crash_reserved_mem_nr;
> > }
> >
> >+static int get_page_offset()
> >+{
> >+#ifdef __x86_64__
> >+	struct utsname utsname;
> >+	if (uname(&utsname)) {
> >+		ERRMSG("Cannot get name and information about current kernel : %s", strerror(errno));
> >+		return FALSE;
> >+	}
> >+
> >+	info->kernel_version = get_kernel_version(utsname.release);
> >+	get_versiondep_info_x86_64();
> >+#endif /* x86_64 */
> 
> You should replace get_versiondep_info_x86_64() with get_versiondep_info()
> to get rid of #ifdef.
> #ifdef is messy, I don't want to use it if possible.

Sure, will do.

> 
> 
> Thanks
> Atsushi Kumagai.
> 
> >+
> >+	return TRUE;
> >+}
> >+
> > static struct option longopts[] = {
> > 	{"split", no_argument, NULL, OPT_SPLIT},
> > 	{"reassemble", no_argument, NULL, OPT_REASSEMBLE},
> >--
> >1.8.5.3
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec



More information about the kexec mailing list