[PATCH v2] makedumpfile: Introduce the mdf_pfn_t type
Atsushi Kumagai
kumagai-atsushi at mxc.nes.nec.co.jp
Wed Apr 16 21:54:37 PDT 2014
Hello Petr,
Could you repost this later for v1.5.7?
In v1.5.6, is_on() will also use "unsigned long long" for pfn.
Thanks
Atsushi Kumagai
>Replace unsigned long long with mdf_pfn_t where:
>
> a. the variable denotes a PFN
> b. the variable is a number of pages
>
>The number of pages is converted to a mdf_pfn_t, because it is a result
>of subtracting two PFNs or incremented in a loop over a range of PFNs,
>so it can get as large as a PFN.
>
>Note: The mdf_ (i.e. makedumpfile) prefix is used to prevent possible
>conflicts with other software that defines a pfn_t type.
>
>Signed-off-by: Petr Tesarik <ptesarik at suse.cz>
>---
> makedumpfile.c | 152 ++++++++++++++++++++++++++++++---------------------------
> makedumpfile.h | 46 ++++++++---------
> sadump_info.c | 15 +++---
> sadump_info.h | 4 +-
> 4 files changed, 114 insertions(+), 103 deletions(-)
>
>diff --git a/makedumpfile.c b/makedumpfile.c
>index 75092a8..5609430 100644
>--- a/makedumpfile.c
>+++ b/makedumpfile.c
>@@ -37,7 +37,7 @@ struct DumpInfo *info = NULL;
>
> char filename_stdout[] = FILENAME_STDOUT;
>
>-static void first_cycle(unsigned long long start, unsigned long long max, struct cycle *cycle)
>+static void first_cycle(mdf_pfn_t start, mdf_pfn_t max, struct cycle *cycle)
> {
> cycle->start_pfn = round(start, info->pfn_cyclic);
> cycle->end_pfn = cycle->start_pfn + info->pfn_cyclic;
>@@ -46,7 +46,7 @@ static void first_cycle(unsigned long long start, unsigned long long max, struct
> cycle->end_pfn = max;
> }
>
>-static void update_cycle(unsigned long long max, struct cycle *cycle)
>+static void update_cycle(mdf_pfn_t max, struct cycle *cycle)
> {
> cycle->start_pfn= cycle->end_pfn;
> cycle->end_pfn= cycle->start_pfn + info->pfn_cyclic;
>@@ -55,7 +55,7 @@ static void update_cycle(unsigned long long max, struct cycle *cycle)
> cycle->end_pfn = max;
> }
>
>-static int end_cycle(unsigned long long max, struct cycle *cycle)
>+static int end_cycle(mdf_pfn_t max, struct cycle *cycle)
> {
> return (cycle->start_pfn >= max)?TRUE:FALSE;
> }
>@@ -67,15 +67,15 @@ static int end_cycle(unsigned long long max, struct cycle *cycle)
> /*
> * The numbers of the excluded pages
> */
>-unsigned long long pfn_zero;
>-unsigned long long pfn_memhole;
>-unsigned long long pfn_cache;
>-unsigned long long pfn_cache_private;
>-unsigned long long pfn_user;
>-unsigned long long pfn_free;
>-unsigned long long pfn_hwpoison;
>+mdf_pfn_t pfn_zero;
>+mdf_pfn_t pfn_memhole;
>+mdf_pfn_t pfn_cache;
>+mdf_pfn_t pfn_cache_private;
>+mdf_pfn_t pfn_user;
>+mdf_pfn_t pfn_free;
>+mdf_pfn_t pfn_hwpoison;
>
>-unsigned long long num_dumped;
>+mdf_pfn_t num_dumped;
>
> int retcd = FAILED; /* return code */
>
>@@ -122,7 +122,9 @@ unsigned long long
> ptom_xen(unsigned long long paddr)
> {
> unsigned long mfn;
>- unsigned long long maddr, pfn, mfn_idx, frame_idx;
>+ unsigned long long maddr;
>+ mdf_pfn_t pfn;
>+ unsigned long long mfn_idx, frame_idx;
>
> pfn = paddr_to_pfn(paddr);
> mfn_idx = pfn / MFNS_PER_FRAME;
>@@ -226,12 +228,13 @@ is_in_same_page(unsigned long vaddr1, unsigned long vaddr2)
> }
>
> #define BITMAP_SECT_LEN 4096
>-static inline int is_dumpable(struct dump_bitmap *, unsigned long long);
>-static inline int is_dumpable_cyclic(char *bitmap, unsigned long long, struct cycle *cycle);
>+static inline int is_dumpable(struct dump_bitmap *, mdf_pfn_t);
>+static inline int is_dumpable_cyclic(char *bitmap, mdf_pfn_t, struct cycle *cycle);
> unsigned long
>-pfn_to_pos(unsigned long long pfn)
>+pfn_to_pos(mdf_pfn_t pfn)
> {
>- unsigned long desc_pos, i;
>+ unsigned long desc_pos;
>+ mdf_pfn_t i;
>
> desc_pos = info->valid_pages[pfn / BITMAP_SECT_LEN];
> for (i = round(pfn, BITMAP_SECT_LEN); i < pfn; i++)
>@@ -246,7 +249,7 @@ read_page_desc(unsigned long long paddr, page_desc_t *pd)
> {
> struct disk_dump_header *dh;
> unsigned long desc_pos;
>- unsigned long long pfn;
>+ mdf_pfn_t pfn;
> off_t offset;
>
> /*
>@@ -2375,8 +2378,8 @@ pgdat4:
> }
>
> void
>-dump_mem_map(unsigned long long pfn_start,
>- unsigned long long pfn_end, unsigned long mem_map, int num_mm)
>+dump_mem_map(mdf_pfn_t pfn_start, mdf_pfn_t pfn_end,
>+ unsigned long mem_map, int num_mm)
> {
> struct mem_map_data *mmd;
>
>@@ -2802,7 +2805,7 @@ int
> get_mm_sparsemem(void)
> {
> unsigned int section_nr, mem_section_size, num_section;
>- unsigned long long pfn_start, pfn_end;
>+ mdf_pfn_t pfn_start, pfn_end;
> unsigned long section, mem_map;
> unsigned long *mem_sec = NULL;
>
>@@ -2886,7 +2889,7 @@ get_mem_map_without_mm(void)
> int
> get_mem_map(void)
> {
>- unsigned long long max_pfn = 0;
>+ mdf_pfn_t max_pfn = 0;
> unsigned int i;
> int ret;
>
>@@ -2944,7 +2947,7 @@ initialize_bitmap_memory(void)
> struct dump_bitmap *bmp;
> off_t bitmap_offset;
> off_t bitmap_len, max_sect_len;
>- unsigned long pfn;
>+ mdf_pfn_t pfn;
> int i, j;
> long block_size;
>
>@@ -3309,8 +3312,7 @@ initialize_2nd_bitmap(struct dump_bitmap *bitmap)
> }
>
> int
>-set_bitmap(struct dump_bitmap *bitmap, unsigned long long pfn,
>- int val)
>+set_bitmap(struct dump_bitmap *bitmap, mdf_pfn_t pfn, int val)
> {
> int byte, bit;
> off_t old_offset, new_offset;
>@@ -3358,7 +3360,7 @@ set_bitmap(struct dump_bitmap *bitmap, unsigned long long pfn,
> }
>
> int
>-set_bitmap_cyclic(char *bitmap, unsigned long long pfn, int val, struct cycle *cycle)
>+set_bitmap_cyclic(char *bitmap, mdf_pfn_t pfn, int val, struct cycle *cycle)
> {
> int byte, bit;
>
>@@ -3418,7 +3420,7 @@ sync_2nd_bitmap(void)
> }
>
> int
>-set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
>+set_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (info->flag_cyclic) {
> return set_bitmap_cyclic(info->partial_bitmap1, pfn, 1, cycle);
>@@ -3428,7 +3430,7 @@ set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> }
>
> int
>-clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
>+clear_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (info->flag_cyclic) {
> return set_bitmap_cyclic(info->partial_bitmap1, pfn, 0, cycle);
>@@ -3438,7 +3440,7 @@ clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle)
> }
>
> int
>-clear_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
>+clear_bit_on_2nd_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (info->flag_cyclic) {
> return set_bitmap_cyclic(info->partial_bitmap2, pfn, 0, cycle);
>@@ -3448,7 +3450,7 @@ clear_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> }
>
> int
>-clear_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
>+clear_bit_on_2nd_bitmap_for_kernel(mdf_pfn_t pfn, struct cycle *cycle)
> {
> unsigned long long maddr;
>
>@@ -3465,7 +3467,7 @@ clear_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
> }
>
> int
>-set_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
>+set_bit_on_2nd_bitmap(mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (info->flag_cyclic) {
> return set_bitmap_cyclic(info->partial_bitmap2, pfn, 1, cycle);
>@@ -3475,7 +3477,7 @@ set_bit_on_2nd_bitmap(unsigned long long pfn, struct cycle *cycle)
> }
>
> int
>-set_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn, struct cycle *cycle)
>+set_bit_on_2nd_bitmap_for_kernel(mdf_pfn_t pfn, struct cycle *cycle)
> {
> unsigned long long maddr;
>
>@@ -3786,11 +3788,11 @@ rearrange_dumpdata(void)
> return TRUE;
> }
>
>-unsigned long long
>+mdf_pfn_t
> page_to_pfn(unsigned long page)
> {
> unsigned int num;
>- unsigned long long pfn = ULONGLONG_MAX;
>+ mdf_pfn_t pfn = ULONGLONG_MAX;
> unsigned long long index = 0;
> struct mem_map_data *mmd;
>
>@@ -3820,7 +3822,7 @@ reset_bitmap_of_free_pages(unsigned long node_zones, struct cycle *cycle)
> int order, i, migrate_type, migrate_types;
> unsigned long curr, previous, head, curr_page, curr_prev;
> unsigned long addr_free_pages, free_pages = 0, found_free_pages = 0;
>- unsigned long long pfn, start_pfn;
>+ mdf_pfn_t pfn, start_pfn;
>
> /*
> * On linux-2.6.24 or later, free_list is divided into the array.
>@@ -4423,7 +4425,7 @@ create_1st_bitmap(void)
> int i;
> unsigned int num_pt_loads = get_num_pt_loads();
> char buf[info->page_size];
>- unsigned long long pfn, pfn_start, pfn_end, pfn_bitmap1;
>+ mdf_pfn_t pfn, pfn_start, pfn_end, pfn_bitmap1;
> unsigned long long phys_start, phys_end;
> struct timeval tv_start;
> off_t offset_page;
>@@ -4495,10 +4497,10 @@ int
> create_1st_bitmap_cyclic(struct cycle *cycle)
> {
> int i;
>- unsigned long long pfn, pfn_bitmap1;
>+ mdf_pfn_t pfn, pfn_bitmap1;
> unsigned long long phys_start, phys_end;
>- unsigned long long pfn_start, pfn_end;
>- unsigned long long pfn_start_roundup, pfn_end_round;
>+ mdf_pfn_t pfn_start, pfn_end;
>+ mdf_pfn_t pfn_start_roundup, pfn_end_round;
> unsigned long pfn_start_byte, pfn_end_byte;
>
> /*
>@@ -4556,7 +4558,8 @@ create_1st_bitmap_cyclic(struct cycle *cycle)
> int
> exclude_zero_pages(void)
> {
>- unsigned long long pfn, paddr;
>+ mdf_pfn_t pfn;
>+ unsigned long long paddr;
> struct dump_bitmap bitmap2;
> struct timeval tv_start;
> unsigned char buf[info->page_size];
>@@ -4608,10 +4611,10 @@ static int
> initialize_2nd_bitmap_cyclic(struct cycle *cycle)
> {
> int i;
>- unsigned long long pfn;
>+ mdf_pfn_t pfn;
> unsigned long long phys_start, phys_end;
>- unsigned long long pfn_start, pfn_end;
>- unsigned long long pfn_start_roundup, pfn_end_round;
>+ mdf_pfn_t pfn_start, pfn_end;
>+ mdf_pfn_t pfn_start_roundup, pfn_end_round;
> unsigned long pfn_start_byte, pfn_end_byte;
>
> /*
>@@ -4659,10 +4662,12 @@ initialize_2nd_bitmap_cyclic(struct cycle *cycle)
>
> int
> __exclude_unnecessary_pages(unsigned long mem_map,
>- unsigned long long pfn_start, unsigned long long pfn_end, struct cycle *cycle)
>+ mdf_pfn_t pfn_start, mdf_pfn_t pfn_end, struct cycle *cycle)
> {
>- unsigned long long pfn, pfn_mm, maddr;
>- unsigned long long pfn_read_start, pfn_read_end, index_pg;
>+ mdf_pfn_t pfn;
>+ unsigned long index_pg, pfn_mm;
>+ unsigned long long maddr;
>+ mdf_pfn_t pfn_read_start, pfn_read_end;
> unsigned char page_cache[SIZE(page) * PGMM_CACHED];
> unsigned char *pcache;
> unsigned int _count, _mapcount = 0;
>@@ -5162,7 +5167,7 @@ get_loads_dumpfile(void)
> {
> int i, phnum, num_new_load = 0;
> long page_size = info->page_size;
>- unsigned long long pfn, pfn_start, pfn_end, num_excluded;
>+ mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
> unsigned long frac_head, frac_tail;
> Elf64_Phdr load;
> struct dump_bitmap bitmap2;
>@@ -5612,10 +5617,10 @@ out:
> return ret;
> }
>
>-unsigned long long
>+mdf_pfn_t
> get_num_dumpable(void)
> {
>- unsigned long long pfn, num_dumpable;
>+ mdf_pfn_t pfn, num_dumpable;
> struct dump_bitmap bitmap2;
>
> initialize_2nd_bitmap(&bitmap2);
>@@ -5627,10 +5632,10 @@ get_num_dumpable(void)
> return num_dumpable;
> }
>
>-unsigned long long
>+mdf_pfn_t
> get_num_dumpable_cyclic(void)
> {
>- unsigned long long pfn, num_dumpable=0;
>+ mdf_pfn_t pfn, num_dumpable=0;
> struct cycle cycle = {0};
>
> for_each_cycle(0, info->max_mapnr, &cycle)
>@@ -5692,8 +5697,9 @@ write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> {
> int i, phnum;
> long page_size = info->page_size;
>- unsigned long long pfn, pfn_start, pfn_end, paddr, num_excluded;
>- unsigned long long num_dumpable, per;
>+ 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;
>@@ -5878,7 +5884,7 @@ write_elf_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> }
>
> int
>-read_pfn(unsigned long long pfn, unsigned char *buf)
>+read_pfn(mdf_pfn_t pfn, unsigned char *buf)
> {
> unsigned long long paddr;
>
>@@ -5897,7 +5903,7 @@ get_loads_dumpfile_cyclic(void)
> int i, phnum, num_new_load = 0;
> long page_size = info->page_size;
> unsigned char buf[info->page_size];
>- unsigned long long pfn, pfn_start, pfn_end, num_excluded;
>+ mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded;
> unsigned long frac_head, frac_tail;
> Elf64_Phdr load;
> struct cycle cycle = {0};
>@@ -5969,8 +5975,8 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
> int i, phnum;
> long page_size = info->page_size;
> unsigned char buf[info->page_size];
>- unsigned long long pfn, pfn_start, pfn_end, paddr, num_excluded;
>- unsigned long long num_dumpable, per;
>+ mdf_pfn_t pfn, pfn_start, pfn_end, num_excluded, num_dumpable, per;
>+ unsigned long long paddr;
> unsigned long long memsz, filesz;
> unsigned long frac_head, frac_tail;
> off_t off_seg_load, off_memory;
>@@ -6190,8 +6196,8 @@ write_elf_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page)
> int
> write_kdump_pages(struct cache_data *cd_header, struct cache_data *cd_page)
> {
>- unsigned long long pfn, per, num_dumpable;
>- unsigned long long start_pfn, end_pfn;
>+ mdf_pfn_t pfn, per, num_dumpable;
>+ mdf_pfn_t start_pfn, end_pfn;
> unsigned long size_out;
> struct page_desc pd, pd_zero;
> off_t offset_data = 0;
>@@ -6397,8 +6403,8 @@ int
> write_kdump_pages_cyclic(struct cache_data *cd_header, struct cache_data *cd_page,
> struct page_desc *pd_zero, off_t *offset_data, struct cycle *cycle)
> {
>- unsigned long long pfn, per;
>- unsigned long long start_pfn, end_pfn;
>+ mdf_pfn_t pfn, per;
>+ mdf_pfn_t start_pfn, end_pfn;
> unsigned long size_out;
> struct page_desc pd;
> unsigned char buf[info->page_size], *buf_out = NULL;
>@@ -7504,7 +7510,7 @@ read_vmcoreinfo_xen(void)
> }
>
> int
>-allocated_in_map(unsigned long long pfn)
>+allocated_in_map(mdf_pfn_t pfn)
> {
> static unsigned long long cur_idx = -1;
> static unsigned long cur_word;
>@@ -7550,8 +7556,8 @@ exclude_xen3_user_domain(void)
> unsigned int num_pt_loads = get_num_pt_loads();
> unsigned long page_info_addr;
> unsigned long long phys_start, phys_end;
>- unsigned long long pfn, pfn_end;
>- unsigned long long j, size;
>+ mdf_pfn_t pfn, pfn_end;
>+ mdf_pfn_t j, size;
>
> /*
> * NOTE: the first half of bitmap is not used for Xen extraction
>@@ -7614,8 +7620,8 @@ exclude_xen4_user_domain(void)
> unsigned int num_pt_loads = get_num_pt_loads();
> unsigned long page_info_addr;
> unsigned long long phys_start, phys_end;
>- unsigned long long pfn, pfn_end;
>- unsigned long long j, size;
>+ mdf_pfn_t pfn, pfn_end;
>+ mdf_pfn_t j, size;
>
> /*
> * NOTE: the first half of bitmap is not used for Xen extraction
>@@ -7840,7 +7846,7 @@ print_vtop(void)
> void
> print_report(void)
> {
>- unsigned long long pfn_original, pfn_excluded, shrinking;
>+ mdf_pfn_t pfn_original, pfn_excluded, shrinking;
>
> /*
> * /proc/vmcore doesn't contain the memory hole area.
>@@ -7945,9 +7951,9 @@ int
> setup_splitting(void)
> {
> int i;
>- unsigned long long j, pfn_per_dumpfile;
>- unsigned long long start_pfn, end_pfn;
>- unsigned long long num_dumpable = get_num_dumpable();
>+ mdf_pfn_t j, pfn_per_dumpfile;
>+ mdf_pfn_t start_pfn, end_pfn;
>+ mdf_pfn_t num_dumpable = get_num_dumpable();
> struct dump_bitmap bitmap2;
>
> if (info->num_dumpfile <= 1)
>@@ -8274,7 +8280,7 @@ void
> sort_splitting_info(void)
> {
> int i, j;
>- unsigned long long start_pfn, end_pfn;
>+ mdf_pfn_t start_pfn, end_pfn;
> char *name_dumpfile;
>
> /*
>@@ -8310,7 +8316,7 @@ int
> check_splitting_info(void)
> {
> int i;
>- unsigned long long end_pfn;
>+ mdf_pfn_t end_pfn;
>
> /*
> * Check whether there are not lack of /proc/vmcore.
>@@ -8537,8 +8543,8 @@ reassemble_kdump_pages(void)
> int i, fd = 0, ret = FALSE;
> off_t offset_first_ph, offset_ph_org, offset_eraseinfo;
> off_t offset_data_new, offset_zero_page = 0;
>- unsigned long long pfn, start_pfn, end_pfn;
>- unsigned long long num_dumpable;
>+ mdf_pfn_t pfn, start_pfn, end_pfn;
>+ mdf_pfn_t num_dumpable;
> unsigned long size_eraseinfo;
> struct dump_bitmap bitmap2;
> struct disk_dump_header dh;
>diff --git a/makedumpfile.h b/makedumpfile.h
>index 951ed1b..a6a679b 100644
>--- a/makedumpfile.h
>+++ b/makedumpfile.h
>@@ -767,13 +767,15 @@ unsigned long long vaddr_to_paddr_ia64(unsigned long vaddr);
> #define VADDR_REGION(X) (((unsigned long)(X)) >> REGION_SHIFT)
> #endif /* ia64 */
>
>+typedef unsigned long long mdf_pfn_t;
>+
> #ifndef ARCH_PFN_OFFSET
> #define ARCH_PFN_OFFSET 0
> #endif
> #define paddr_to_pfn(X) \
> (((unsigned long long)(X) >> PAGESHIFT()) - ARCH_PFN_OFFSET)
> #define pfn_to_paddr(X) \
>- (((unsigned long long)(X) + ARCH_PFN_OFFSET) << PAGESHIFT())
>+ (((mdf_pfn_t)(X) + ARCH_PFN_OFFSET) << PAGESHIFT())
>
> /* Format of Xen crash info ELF note */
> typedef struct {
>@@ -813,8 +815,8 @@ typedef struct {
> } xen_crash_info_v2_t;
>
> struct mem_map_data {
>- unsigned long long pfn_start;
>- unsigned long long pfn_end;
>+ mdf_pfn_t pfn_start;
>+ mdf_pfn_t pfn_end;
> unsigned long mem_map;
> };
>
>@@ -866,8 +868,8 @@ struct makedumpfile_data_header {
> struct splitting_info {
> char *name_dumpfile;
> int fd_bitmap;
>- unsigned long long start_pfn;
>- unsigned long long end_pfn;
>+ mdf_pfn_t start_pfn;
>+ mdf_pfn_t end_pfn;
> off_t offset_eraseinfo;
> unsigned long size_eraseinfo;
> } splitting_info_t;
>@@ -914,7 +916,7 @@ struct DumpInfo {
> unsigned long vaddr_for_vtop; /* virtual address for debugging */
> long page_size; /* size of page */
> long page_shift;
>- unsigned long long max_mapnr; /* number of page descriptor */
>+ mdf_pfn_t max_mapnr; /* number of page descriptor */
> unsigned long page_offset;
> unsigned long section_size_bits;
> unsigned long max_physmem_bits;
>@@ -1025,10 +1027,10 @@ struct DumpInfo {
> * 1 .. xen_crash_info_t
> * 2 .. xen_crash_info_v2_t */
>
>- unsigned long long dom0_mapnr; /* The number of page in domain-0.
>- * Different from max_mapnr.
>- * max_mapnr is the number of page
>- * in system. */
>+ mdf_pfn_t dom0_mapnr; /* The number of page in domain-0.
>+ * Different from max_mapnr.
>+ * max_mapnr is the number of page
>+ * in system. */
> unsigned long xen_phys_start;
> unsigned long xen_heap_start; /* start mfn of xen heap area */
> unsigned long xen_heap_end; /* end mfn(+1) of xen heap area */
>@@ -1048,15 +1050,15 @@ struct DumpInfo {
> /*
> * for splitting
> */
>- unsigned long long split_start_pfn;
>- unsigned long long split_end_pfn;
>+ mdf_pfn_t split_start_pfn;
>+ mdf_pfn_t split_end_pfn;
>
> /*
> * for cyclic processing
> */
> char *partial_bitmap1;
> char *partial_bitmap2;
>- unsigned long long num_dumpable;
>+ mdf_pfn_t num_dumpable;
> unsigned long bufsize_cyclic;
> unsigned long pfn_cyclic;
>
>@@ -1453,7 +1455,7 @@ int readmem(int type_addr, unsigned long long addr, void *bufptr, size_t size);
> int get_str_osrelease_from_vmlinux(void);
> int read_vmcoreinfo_xen(void);
> int exclude_xen_user_domain(void);
>-unsigned long long get_num_dumpable(void);
>+mdf_pfn_t get_num_dumpable(void);
> int __read_disk_dump_header(struct disk_dump_header *dh, char *filename);
> int read_disk_dump_header(struct disk_dump_header *dh, char *filename);
> int read_kdump_sub_header(struct kdump_sub_header *kh, char *filename);
>@@ -1589,8 +1591,8 @@ int get_xen_info_ia64(void);
> #endif /* s390x */
>
> struct cycle {
>- unsigned long long start_pfn;
>- unsigned long long end_pfn;
>+ mdf_pfn_t start_pfn;
>+ mdf_pfn_t end_pfn;
> };
>
> static inline int
>@@ -1600,7 +1602,7 @@ is_on(char *bitmap, int i)
> }
>
> static inline int
>-is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
>+is_dumpable(struct dump_bitmap *bitmap, mdf_pfn_t pfn)
> {
> off_t offset;
> if (pfn == 0 || bitmap->no_block != pfn/PFN_BUFBITMAP) {
>@@ -1616,7 +1618,7 @@ is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
> }
>
> static inline int
>-is_dumpable_cyclic(char *bitmap, unsigned long long pfn, struct cycle *cycle)
>+is_dumpable_cyclic(char *bitmap, mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (pfn < cycle->start_pfn || cycle->end_pfn <= pfn)
> return FALSE;
>@@ -1625,7 +1627,7 @@ is_dumpable_cyclic(char *bitmap, unsigned long long pfn, struct cycle *cycle)
> }
>
> static inline int
>-is_cyclic_region(unsigned long long pfn, struct cycle *cycle)
>+is_cyclic_region(mdf_pfn_t pfn, struct cycle *cycle)
> {
> if (pfn < cycle->start_pfn || cycle->end_pfn <= pfn)
> return FALSE;
>@@ -1647,8 +1649,8 @@ is_zero_page(unsigned char *buf, long page_size)
> }
>
> void write_vmcoreinfo_data(void);
>-int set_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle);
>-int clear_bit_on_1st_bitmap(unsigned long long pfn, struct cycle *cycle);
>+int set_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle);
>+int clear_bit_on_1st_bitmap(mdf_pfn_t pfn, struct cycle *cycle);
>
> #ifdef __x86__
>
>@@ -1759,7 +1761,7 @@ struct elf_prstatus {
> /*
> * Function Prototype.
> */
>-unsigned long long get_num_dumpable_cyclic(void);
>+mdf_pfn_t get_num_dumpable_cyclic(void);
> int get_loads_dumpfile_cyclic(void);
> int initial_xen(void);
> unsigned long long get_free_memory_size(void);
>diff --git a/sadump_info.c b/sadump_info.c
>index f14ffc9..9434ff7 100644
>--- a/sadump_info.c
>+++ b/sadump_info.c
>@@ -94,7 +94,7 @@ static int read_device_diskset(struct sadump_diskset_info *sdi, void *buf,
> size_t bytes, ulong *offset);
> static int read_sadump_header(char *filename);
> static int read_sadump_header_diskset(int diskid, struct sadump_diskset_info *sdi);
>-static unsigned long long pfn_to_block(unsigned long long pfn);
>+static unsigned long long pfn_to_block(mdf_pfn_t pfn);
> static int lookup_diskset(unsigned long long whole_offset, int *diskid,
> unsigned long long *disk_offset);
> static int max_mask_cpu(void);
>@@ -202,7 +202,8 @@ sadump_copy_1st_bitmap_from_memory(void)
> * modify bitmap accordingly.
> */
> if (si->kdump_backed_up) {
>- unsigned long long paddr, pfn, backup_src_pfn;
>+ unsigned long long paddr;
>+ mdf_pfn_t pfn, backup_src_pfn;
>
> for (paddr = si->backup_src_start;
> paddr < si->backup_src_start + si->backup_src_size;
>@@ -754,7 +755,8 @@ sadump_initialize_bitmap_memory(void)
> struct sadump_header *sh = si->sh_memory;
> struct dump_bitmap *bmp;
> unsigned long dumpable_bitmap_offset;
>- unsigned long long section, max_section, pfn;
>+ unsigned long long section, max_section;
>+ mdf_pfn_t pfn;
> unsigned long long *block_table;
>
> dumpable_bitmap_offset =
>@@ -901,7 +903,7 @@ sadump_set_timestamp(struct timeval *ts)
> return TRUE;
> }
>
>-unsigned long long
>+mdf_pfn_t
> sadump_get_max_mapnr(void)
> {
> return si->sh_memory->max_mapnr;
>@@ -951,7 +953,8 @@ failed:
> int
> readpage_sadump(unsigned long long paddr, void *bufptr)
> {
>- unsigned long long pfn, block, whole_offset, perdisk_offset;
>+ mdf_pfn_t pfn;
>+ unsigned long long block, whole_offset, perdisk_offset;
> int fd_memory;
>
> if (si->kdump_backed_up &&
>@@ -1117,7 +1120,7 @@ sadump_check_debug_info(void)
> }
>
> static unsigned long long
>-pfn_to_block(unsigned long long pfn)
>+pfn_to_block(mdf_pfn_t pfn)
> {
> unsigned long long block, section, p;
>
>diff --git a/sadump_info.h b/sadump_info.h
>index c0175dd..131687a 100644
>--- a/sadump_info.h
>+++ b/sadump_info.h
>@@ -42,7 +42,7 @@ int sadump_copy_1st_bitmap_from_memory(void);
> int sadump_initialize_bitmap_memory(void);
> int sadump_num_online_cpus(void);
> int sadump_set_timestamp(struct timeval *ts);
>-unsigned long long sadump_get_max_mapnr(void);
>+mdf_pfn_t sadump_get_max_mapnr(void);
> int readpage_sadump(unsigned long long paddr, void *bufptr);
> int sadump_check_debug_info(void);
> int sadump_generate_vmcoreinfo_from_vmlinux(size_t *vmcoreinfo_size);
>@@ -92,7 +92,7 @@ static inline int sadump_set_timestamp(struct timeval *ts)
> return FALSE;
> }
>
>-static inline unsigned long long sadump_get_max_mapnr(void)
>+static inline mdf_pfn_t sadump_get_max_mapnr(void)
> {
> return 0;
> }
>--
>1.8.4.5
More information about the kexec
mailing list