From 5519b3eba68544dc484d85e9540d440d93f8c924 Mon Sep 17 00:00:00 2001 From: Pingfan Liu Date: Tue, 3 Dec 2019 15:37:07 +0800 Subject: [PATCH] [PATCH] assign bitmap1/2 fd for subprocess in non-cyclic mode In non-cyclic mode with the --split option, each subprocess inherits bitmap1/2->fd from parent. Then they lseek()/read() on the same fd, which means that they interfere with each other. This breaks the purpose of SPLITTING_FD_BITMAP(i) for each subprocess. Without this patch, makedumpfile can fail with error like the following in refiltering, or can break the dumpfile silently by excluding pages wrongly. readpage_kdump_compressed: pfn(2fc1000) is excluded from vmcore. readmem: type_addr: 1, addr:2fc1000000, size:4096 read_pfn: Can't get the page data. Fix it by assigning a subprocess dedicated fd to bitmap1/2->fd. Signed-off-by: Pingfan Liu Signed-off-by: Kazuhito Hagio --- makedumpfile.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/makedumpfile-1.6.6/makedumpfile.c b/makedumpfile-1.6.6/makedumpfile.c index 43107d9..7586d7c 100644 --- a/makedumpfile-1.6.6/makedumpfile.c +++ b/makedumpfile-1.6.6/makedumpfile.c @@ -10091,6 +10091,10 @@ writeout_multiple_dumpfiles(void) info->split_start_pfn = SPLITTING_START_PFN(i); info->split_end_pfn = SPLITTING_END_PFN(i); + if (!info->flag_cyclic) { + info->bitmap1->fd = info->fd_bitmap; + info->bitmap2->fd = info->fd_bitmap; + } if (!reopen_dump_memory()) exit(1); if ((status = writeout_dumpfile()) == FALSE) -- 2.7.5