[PATCH] makedumpfile: Shrink the time for creating 1st-bitmap (Re: problems in kdump kernel if 'maxcpus=1' not specified?)

Jay Lan jlan at sgi.com
Thu Jul 17 13:09:04 EDT 2008


Ken'ichi Ohmichi wrote:
> Hi Jay,
> 
> Ken'ichi Ohmichi wrote:
>> I created the attached patch that makedumpfile does not scan
>> memory gap when creating 1st-bitmap. Could you please try it ?
>> This patch is for makedumpfile-1.2.6.
> 
> I found a bug in the patch I sent before, and I fixed it in the
> attached patch. Could you please try this patch ?
> Sorry for my mistake.

Hi Ken'ichi San,

Thanks for your patch. I need to compete for the test machine. Will
post new data when i have one.

Regards,
 - jay

> 
> 
> Thanks
> Ken'ichi Ohmichi
> 
> diff -puN backup/v1.2.6/makedumpfile.c makedumpfile/makedumpfile.c
> --- backup/v1.2.6/makedumpfile.c	2008-06-05 15:17:17.000000000 +0900
> +++ makedumpfile/makedumpfile.c	2008-07-18 00:14:34.000000000 +0900
> @@ -3987,8 +3987,10 @@ exclude_free_page()
>  int
>  create_1st_bitmap()
>  {
> +	int i;
>  	char *buf = NULL;
> -	unsigned long long pfn, paddr;
> +	unsigned long long pfn, pfn_start, pfn_end, pfn_bitmap1;
> +	struct pt_load_segment *pls;
>  	off_t offset_page;
>  	int ret = FALSE;
>  
> @@ -4021,13 +4023,19 @@ create_1st_bitmap()
>  	/*
>  	 * If page is on memory hole, set bit on the 1st-bitmap.
>  	 */
> -	for (pfn = 0, paddr = 0; pfn < info->max_mapnr;
> -	    pfn++, paddr += info->page_size) {
> -		if (is_in_segs(paddr))
> +	for (i = pfn_bitmap1 = 0; i < info->num_load_memory; i++) {
> +		pls = &info->pt_load_segments[i];
> +		pfn_start = pls->phys_start >> PAGESHIFT();
> +		pfn_end   = pls->phys_end >> PAGESHIFT();
> +		if (!is_in_segs(pfn_start << PAGESHIFT()))
> +			pfn_start++;
> +		for (pfn = pfn_start; pfn < pfn_end; pfn++) {
>  			set_bit_on_1st_bitmap(pfn);
> -		else
> -			pfn_memhole++;
> +			pfn_bitmap1++;
> +		}
>  	}
> +	pfn_memhole = info->max_mapnr - pfn_bitmap1;
> +
>  	if (!sync_1st_bitmap())
>  		goto out;
>  




More information about the kexec mailing list