[PATCH 2/2] sadump, bugfix: perform explicit zero page filtering

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Tue Oct 20 00:11:16 PDT 2015


Currently, crash utility faces different behaviors on reading zero
pages that are filtered out on the kdump-compressed format originating
from kdump ELF and from sadump formats: the former succeeds in reading
zero pages but the latter fails. This is a design bug. To fix this
issue, perform zero pages filtering explicitly if some pages are
filtered out.

Signed-off-by: Takao Indoh <indou.takao at jp.fujitsu.com>
Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com>
---
 sadump_info.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/sadump_info.c b/sadump_info.c
index e30b802..63d00c6 100644
--- a/sadump_info.c
+++ b/sadump_info.c
@@ -878,6 +878,21 @@ sadump_initialize_bitmap_memory(void)
 	bmp->offset = si->sub_hdr_offset + sh->block_size * sh->sub_hdr_size;
 	si->ram_bitmap = bmp;
 
+	/*
+	 * Perform explicitly zero filtering. Without this processing
+	 * crash utility faces different behaviors on reading zero
+	 * pages that are filtered out on the kdump-compressed format
+	 * originating from kdump ELF and from sadump formats: the
+	 * former succeeds in reading zero pages but the latter fails.
+	 */
+	for (pfn = 0; pfn < si->max_mapnr; pfn++) {
+		if (sadump_is_ram(pfn) &&
+		    !sadump_is_dumpable(info->bitmap_memory, pfn)) {
+			info->dump_level |= DL_EXCLUDE_ZERO;
+			break;
+		}
+	}
+
 	return TRUE;
 }
 
@@ -1053,9 +1068,8 @@ readpage_sadump(unsigned long long paddr, void *bufptr)
 	}
 
 	if (!sadump_is_dumpable(info->bitmap_memory, pfn)) {
-		ERRMSG("pfn(%llx) is excluded from %s.\n", pfn,
-		       info->name_memory);
-		return FALSE;
+		memset(bufptr, 0, info->page_size);
+		return TRUE;
 	}
 
 	block = pfn_to_block(pfn);
-- 
1.9.3





More information about the kexec mailing list