[PATCH 08/13] Remove the old logic of writing ELF pages.

Atsushi Kumagai ats-kumagai at wm.jp.nec.com
Sun May 10 23:29:49 PDT 2015


write_elf_pages() and related functions are no longer used,
remove them.

Signed-off-by: Atsushi Kumagai <ats-kumagai at wm.jp.nec.com>
---
 makedumpfile.c | 297 ---------------------------------------------------------
 1 file changed, 297 deletions(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index 7993e1d..c162cbc 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -4724,58 +4724,6 @@ create_1st_bitmap(struct cycle *cycle)
  * Exclude the page filled with zero in case of creating an elf dumpfile.
  */
 int
-exclude_zero_pages(void)
-{
-	mdf_pfn_t pfn;
-	unsigned long long paddr;
-	struct dump_bitmap bitmap2;
-	struct timeval tv_start;
-	unsigned char buf[info->page_size];
-
-	initialize_2nd_bitmap(&bitmap2);
-
-	gettimeofday(&tv_start, NULL);
-
-	for (pfn = 0, paddr = pfn_to_paddr(pfn); pfn < info->max_mapnr;
-	    pfn++, paddr += info->page_size) {
-
-		print_progress(PROGRESS_ZERO_PAGES, pfn, info->max_mapnr);
-
-		if (!is_in_segs(paddr))
-			continue;
-
-		if (!is_dumpable(&bitmap2, pfn, NULL))
-			continue;
-
-		if (is_xen_memory()) {
-			if (!readmem(MADDR_XEN, paddr, buf, info->page_size)) {
-				ERRMSG("Can't get the page data(pfn:%llx, max_mapnr:%llx).\n",
-				    pfn, info->max_mapnr);
-				return FALSE;
-			}
-		} else {
-			if (!readmem(PADDR, paddr, buf, info->page_size)) {
-				ERRMSG("Can't get the page data(pfn:%llx, max_mapnr:%llx).\n",
-				    pfn, info->max_mapnr);
-				return FALSE;
-			}
-		}
-		if (is_zero_page(buf, info->page_size)) {
-			if (clear_bit_on_2nd_bitmap(pfn, NULL))
-				pfn_zero++;
-		}
-	}
-
-	/*
-	 * print [100 %]
-	 */
-	print_progress(PROGRESS_ZERO_PAGES, info->max_mapnr, info->max_mapnr);
-	print_execution_time(PROGRESS_ZERO_PAGES, &tv_start);
-
-	return TRUE;
-}
-
-int
 exclude_zero_pages_cyclic(struct cycle *cycle)
 {
 	mdf_pfn_t pfn;
@@ -5428,60 +5376,6 @@ out:
 }
 
 int
-get_loads_dumpfile(void)
-{
-	int i, phnum, num_new_load = 0;
-	long page_size = info->page_size;
-	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
-	unsigned long frac_head, frac_tail;
-	Elf64_Phdr load;
-	struct dump_bitmap bitmap2;
-
-	initialize_2nd_bitmap(&bitmap2);
-
-	if (!(phnum = get_phnum_memory()))
-		return FALSE;
-
-	for (i = 0; i < phnum; i++) {
-		if (!get_phdr_memory(i, &load))
-			return FALSE;
-		if (load.p_type != PT_LOAD)
-			continue;
-
-		pfn_start = paddr_to_pfn(load.p_paddr);
-		pfn_end   = paddr_to_pfn(load.p_paddr + load.p_memsz);
-		frac_head = page_size - (load.p_paddr % page_size);
-		frac_tail = (load.p_paddr + load.p_memsz) % page_size;
-
-		num_new_load++;
-		num_excluded = 0;
-
-		if (frac_head && (frac_head != page_size))
-			pfn_start++;
-		if (frac_tail)
-			pfn_end++;
-
-		for (pfn = pfn_start; pfn < pfn_end; pfn++) {
-			if (!is_dumpable(&bitmap2, pfn, NULL)) {
-				num_excluded++;
-				continue;
-			}
-
-			/*
-			 * If the number of the contiguous pages to be excluded
-			 * is 256 or more, those pages are excluded really.
-			 * And a new PT_LOAD segment is created.
-			 */
-			if (num_excluded >= PFN_EXCLUDED) {
-				num_new_load++;
-			}
-			num_excluded = 0;
-		}
-	}
-	return num_new_load;
-}
-
-int
 prepare_cache_data(struct cache_data *cd)
 {
 	cd->fd         = info->fd_dumpfile;
@@ -6116,197 +6010,6 @@ write_elf_load_segment(struct cache_data *cd_page, unsigned long long paddr,
 }
 
 int
-write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page)
-{
-	int i, phnum;
-	long page_size = info->page_size;
-	mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
-	unsigned long long paddr;
-	mdf_pfn_t num_dumpable, per;
-	unsigned long long memsz, filesz;
-	unsigned long frac_head, frac_tail;
-	off_t off_seg_load, off_memory;
-	Elf64_Phdr load;
-	struct dump_bitmap bitmap2;
-	struct timeval tv_start;
-
-	if (!info->flag_elf_dumpfile)
-		return FALSE;
-
-	initialize_2nd_bitmap(&bitmap2);
-
-	num_dumpable = get_num_dumpable();
-	per = num_dumpable / 10000;
-	per = per ? per : 1;
-
-	off_seg_load    = info->offset_load_dumpfile;
-	cd_page->offset = info->offset_load_dumpfile;
-
-	if (!(phnum = get_phnum_memory()))
-		return FALSE;
-
-	gettimeofday(&tv_start, NULL);
-
-	for (i = 0; i < phnum; i++) {
-		if (!get_phdr_memory(i, &load))
-			return FALSE;
-
-		if (load.p_type != PT_LOAD)
-			continue;
-
-		off_memory= load.p_offset;
-		paddr     = load.p_paddr;
-		pfn_start = paddr_to_pfn(load.p_paddr);
-		pfn_end   = paddr_to_pfn(load.p_paddr + load.p_memsz);
-		frac_head = page_size - (load.p_paddr % page_size);
-		frac_tail = (load.p_paddr + load.p_memsz)%page_size;
-
-		num_excluded = 0;
-		memsz  = 0;
-		filesz = 0;
-		if (frac_head && (frac_head != page_size)) {
-			memsz  = frac_head;
-			filesz = frac_head;
-			pfn_start++;
-		}
-
-		if (frac_tail)
-			pfn_end++;
-
-		for (pfn = pfn_start; pfn < pfn_end; pfn++) {
-			if (!is_dumpable(&bitmap2, pfn, NULL)) {
-				num_excluded++;
-				if ((pfn == pfn_end - 1) && frac_tail)
-					memsz += frac_tail;
-				else
-					memsz += page_size;
-				continue;
-			}
-
-			if ((num_dumped % per) == 0)
-				print_progress(PROGRESS_COPY, num_dumped, num_dumpable);
-
-			num_dumped++;
-
-			/*
-			 * The dumpable pages are continuous.
-			 */
-			if (!num_excluded) {
-				if ((pfn == pfn_end - 1) && frac_tail) {
-					memsz  += frac_tail;
-					filesz += frac_tail;
-				} else {
-					memsz  += page_size;
-					filesz += page_size;
-				}
-				continue;
-			/*
-			 * If the number of the contiguous pages to be excluded
-			 * is 255 or less, those pages are not excluded.
-			 */
-			} else if (num_excluded < PFN_EXCLUDED) {
-				if ((pfn == pfn_end - 1) && frac_tail) {
-					memsz  += frac_tail;
-					filesz += (page_size*num_excluded
-					    + frac_tail);
-				}else {
-					memsz  += page_size;
-					filesz += (page_size*num_excluded
-					    + page_size);
-				}
-				num_excluded = 0;
-				continue;
-			}
-
-			/*
-			 * If the number of the contiguous pages to be excluded
-			 * is 256 or more, those pages are excluded really.
-			 * And a new PT_LOAD segment is created.
-			 */
-			load.p_memsz  = memsz;
-			load.p_filesz = filesz;
-			if (load.p_filesz)
-				load.p_offset = off_seg_load;
-			else
-				/*
-				 * If PT_LOAD segment does not have real data
-				 * due to the all excluded pages, the file
-				 * offset is not effective and it should be 0.
-				 */
-				load.p_offset = 0;
-
-			/*
-			 * Write a PT_LOAD header.
-			 */
-			if (!write_elf_phdr(cd_header, &load))
-				return FALSE;
-
-			/*
-			 * Write a PT_LOAD segment.
-			 */
-			if (load.p_filesz)
-				if (!write_elf_load_segment(cd_page, paddr,
-				    off_memory, load.p_filesz))
-					return FALSE;
-
-			load.p_paddr += load.p_memsz;
-#ifdef __x86__
-			/*
-			 * FIXME:
-			 *  (x86) Fill PT_LOAD headers with appropriate
-			 *        virtual addresses.
-			 */
-			if (load.p_paddr < MAXMEM)
-				load.p_vaddr += load.p_memsz;
-#else
-			load.p_vaddr += load.p_memsz;
-#endif /* x86 */
-			paddr  = load.p_paddr;
-			off_seg_load += load.p_filesz;
-
-			num_excluded = 0;
-			memsz  = page_size;
-			filesz = page_size;
-		}
-		/*
-		 * Write the last PT_LOAD.
-		 */
-		load.p_memsz  = memsz;
-		load.p_filesz = filesz;
-		load.p_offset = off_seg_load;
-
-		/*
-		 * Write a PT_LOAD header.
-		 */
-		if (!write_elf_phdr(cd_header, &load))
-			return FALSE;
-
-		/*
-		 * Write a PT_LOAD segment.
-		 */
-		if (load.p_filesz)
-			if (!write_elf_load_segment(cd_page, paddr,
-						    off_memory, load.p_filesz))
-				return FALSE;
-
-		off_seg_load += load.p_filesz;
-	}
-	if (!write_cache_bufsz(cd_header))
-		return FALSE;
-	if (!write_cache_bufsz(cd_page))
-		return FALSE;
-
-	/*
-	 * print [100 %]
-	 */
-	print_progress(PROGRESS_COPY, num_dumpable, num_dumpable);
-	print_execution_time(PROGRESS_COPY, &tv_start);
-	PROGRESS_MSG("\n");
-
-	return TRUE;
-}
-
-int
 read_pfn(mdf_pfn_t pfn, unsigned char *buf)
 {
 	unsigned long long paddr;
-- 
1.9.0



More information about the kexec mailing list