[PATCH 11/13] Adjust refiltering path to the new code.

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


Refiltering mode is used in 1st kernel environment, we can
expect enough space from TMPDIR to store the bitmap file.

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

diff --git a/makedumpfile.c b/makedumpfile.c
index e58940b..fe7670f 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -1033,7 +1033,8 @@ open_dump_bitmap(void)
 	char *tmpname;
 
 	/* Unnecessary to open */
-	if (!info->working_dir && !info->flag_reassemble && !info->flag_mem_usage)
+	if (!info->working_dir && !info->flag_reassemble && !info->flag_refiltering
+	    && !info->flag_mem_usage)
 		return TRUE;
 
 	tmpname = getenv("TMPDIR");
@@ -3198,13 +3199,6 @@ initial(void)
 			return FALSE;
 		}
 
-		if(info->flag_cyclic) {
-			info->flag_cyclic = FALSE;
-			MSG("Switched running mode from cyclic to non-cyclic,\n");
-			MSG("because the cyclic mode doesn't support refiltering\n");
-			MSG("kdump compressed format.\n");
-		}
-
 		info->phys_base = info->kh_memory->phys_base;
 		info->max_dump_level |= info->kh_memory->dump_level;
 
@@ -3256,7 +3250,8 @@ out:
 	if (!get_max_mapnr())
 		return FALSE;
 
-	if (info->working_dir || info->flag_reassemble || info->flag_mem_usage) {
+	if (info->working_dir || info->flag_reassemble || info->flag_refiltering
+	    || info->flag_mem_usage) {
 		/* Implemented as non-cyclic mode based on the file */
 		info->flag_cyclic = FALSE;
 		info->pfn_cyclic = info->max_mapnr;
@@ -3593,24 +3588,6 @@ set_bit_on_2nd_bitmap_for_kernel(mdf_pfn_t pfn, struct cycle *cycle)
 	return set_bit_on_2nd_bitmap(pfn, cycle);
 }
 
-static inline int
-is_in_segs(unsigned long long paddr)
-{
-	if (info->flag_refiltering || info->flag_sadump) {
-		static struct dump_bitmap bitmap1 = {0};
-
-		if (bitmap1.fd == 0)
-			initialize_1st_bitmap(&bitmap1);
-
-		return is_dumpable(&bitmap1, paddr_to_pfn(paddr), NULL);
-	}
-
-	if (paddr_to_offset(paddr))
-		return TRUE;
-	else
-		return FALSE;
-}
-
 int
 read_cache(struct cache_data *cd)
 {
@@ -4723,6 +4700,24 @@ create_1st_bitmap(struct cycle *cycle)
 	}
 }
 
+static inline int
+is_in_segs(unsigned long long paddr)
+{
+	if (info->flag_refiltering || info->flag_sadump) {
+		if (info->bitmap1->fd == 0) {
+			initialize_1st_bitmap(info->bitmap1);
+			create_1st_bitmap_file();
+		}
+
+		return is_dumpable(info->bitmap1, paddr_to_pfn(paddr), NULL);
+	}
+
+	if (paddr_to_offset(paddr))
+		return TRUE;
+	else
+		return FALSE;
+}
+
 /*
  * Exclude the page filled with zero in case of creating an elf dumpfile.
  */
@@ -6945,7 +6940,8 @@ close_dump_file(void)
 void
 close_dump_bitmap(void)
 {
-	if (!info->working_dir && !info->flag_reassemble && !info->flag_mem_usage)
+	if (!info->working_dir && !info->flag_reassemble && !info->flag_refiltering
+	    && !info->flag_mem_usage)
 		return;
 
 	if ((info->fd_bitmap = close(info->fd_bitmap)) < 0)
-- 
1.9.0



More information about the kexec mailing list