[PATCH] makedumpfile: output files filling ramdisk
Masayuki Igawa
igawa at mxs.nes.nec.co.jp
Wed Jun 16 02:06:00 EDT 2010
Hi,
Thank you for your patch.
We'll merge and test it.
But I have a question.
What is your tested CPU arch? (x86/x86_64/ia64...)
And could you separate this patch like below?
o [1/2] output files filling ramdisk
o [2/2] update LATEST_VERSION
--
Regards,
Masayuki Igawa
From: Cliff Wickman <cpw at sgi.com>
Subject: [PATCH] makedumpfile: output files filling ramdisk
Date: Tue, 15 Jun 2010 14:49:25 -0500
>
> makedumpfile's path FILENAME_BITMAP "/tmp/..." causes it to try to write
> bitmap files to the ramdisk. These can be very large if the machine has
> lots of memory, and so writing the file can fail.
>
> makedumpfile is exec'd by kdumptool. And kdumptool should chroot to
> its --root directory. But if the intent is to avoid this problem it
> doesn't seem to work. That may be the proper fix, rather than the below.
>
> A TMPDIR environment variable is set in the script
> /lib/mkinitrd/scripts/boot-kdump.sh. So this patch assumes that
> the FILENAME_BITMAP path should be based at TMPDIR.
>
> Also below, LATEST_VERSION is updated to KERNEL_VERSION(2, 6, 32), as this
> seems to work on 2.6.32 and prevents a makedumpfile grumbling.
>
> Diffed against makedumpfile-1.3.5
>
> Signed-off-by: Cliff Wickman <cpw at sgi.com>
> ---
> makedumpfile.c | 13 ++++++++++---
> makedumpfile.h | 4 ++--
> 2 files changed, 12 insertions(+), 5 deletions(-)
>
> Index: makedumpfile-1.3.5/makedumpfile.c
> ===================================================================
> --- makedumpfile-1.3.5.orig/makedumpfile.c
> +++ makedumpfile-1.3.5/makedumpfile.c
> @@ -933,14 +933,21 @@ int
> open_dump_bitmap(void)
> {
> int i, fd;
> + char *tmpname;
>
> - if ((info->name_bitmap
> - = (char *)malloc(sizeof(FILENAME_BITMAP))) == NULL) {
> + tmpname = getenv("TMPDIR");
> + if (!tmpname)
> + tmpname = "/tmp";
> +
> + if ((info->name_bitmap = (char *)malloc(sizeof(FILENAME_BITMAP) +
> + strlen(tmpname) + 1)) == NULL) {
> ERRMSG("Can't allocate memory for the filename. %s\n",
> strerror(errno));
> return FALSE;
> }
> - strcpy(info->name_bitmap, FILENAME_BITMAP);
> + strcpy(info->name_bitmap, tmpname);
> + strcat(info->name_bitmap, "/");
> + strcat(info->name_bitmap, FILENAME_BITMAP);
> if ((fd = mkstemp(info->name_bitmap)) < 0) {
> ERRMSG("Can't open the bitmap file(%s). %s\n",
> info->name_bitmap, strerror(errno));
> Index: makedumpfile-1.3.5/makedumpfile.h
> ===================================================================
> --- makedumpfile-1.3.5.orig/makedumpfile.h
> +++ makedumpfile-1.3.5/makedumpfile.h
> @@ -230,7 +230,7 @@ do { \
> #define BUFSIZE_FGETS (1500)
> #define BUFSIZE_BITMAP (4096)
> #define PFN_BUFBITMAP (BITPERBYTE*BUFSIZE_BITMAP)
> -#define FILENAME_BITMAP "/tmp/kdump_bitmapXXXXXX"
> +#define FILENAME_BITMAP "kdump_bitmapXXXXXX"
> #define FILENAME_STDOUT "STDOUT"
>
> /*
> @@ -449,7 +449,7 @@ do { \
> #define KVER_MIN_SHIFT 16
> #define KERNEL_VERSION(x,y,z) (((x) << KVER_MAJ_SHIFT) | ((y) << KVER_MIN_SHIFT) | (z))
> #define OLDEST_VERSION KERNEL_VERSION(2, 6, 15)/* linux-2.6.15 */
> -#define LATEST_VERSION KERNEL_VERSION(2, 6, 31)/* linux-2.6.31 */
> +#define LATEST_VERSION KERNEL_VERSION(2, 6, 32)/* linux-2.6.32 */
>
> /*
> * vmcoreinfo in /proc/vmcore
>
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>
More information about the kexec
mailing list