[RFC PATCH 05/10] Add page flag values as hardcoded values

HATAYAMA Daisuke d.hatayama at jp.fujitsu.com
Thu Jun 28 13:38:37 EDT 2012


These should normally be exported as VMCOREINFO from kernel, but we
cannot modify old kernels and still they are easy to be determined
becasue of a small kernel version dependency with no symbol and type
information.

- PG_slab has had the same value 7 since v2.6.15, and

- PG_buddy has been defined as macro value from v2.6.17 to v2.6.26

  On other versions, pageflags enumeration type is introduced and at
  the version, PG_buddy's value depends on CONFIG_PAGEFLAGS_EXTEND;
  luckily, this can be determined by looking at error_states array,
  for example, but I don't implement it in this patch.

Signed-off-by: HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com>
---

 makedumpfile.c |    6 ++++++
 makedumpfile.h |    3 +++
 2 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index d8da608..bed74df 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -1179,6 +1179,12 @@ get_value_for_old_linux(void)
 		NUMBER(PG_private) = PG_private_ORIGINAL;
 	if (NUMBER(PG_swapcache) == NOT_FOUND_NUMBER)
 		NUMBER(PG_swapcache) = PG_swapcache_ORIGINAL;
+	if (NUMBER(PG_slab) == NOT_FOUND_NUMBER)
+		NUMBER(PG_slab) = PG_slab_ORIGINAL;
+	if (NUMBER(PG_buddy) == NOT_FOUND_NUMBER
+	    && info->kernel_version >= KERNEL_VERSION(2, 6, 17)
+	    && info->kernel_version <= KERNEL_VERSION(2, 6, 26))
+		NUMBER(PG_buddy) = PG_buddy_v2_6_17_to_v2_6_26;
 	return TRUE;
 }
 
diff --git a/makedumpfile.h b/makedumpfile.h
index 2808871..3059a9e 100644
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -68,9 +68,12 @@ int get_mem_type(void);
  * The following values are for linux-2.6.25 or former.
  */
 #define PG_lru_ORIGINAL	 	(5)
+#define PG_slab_ORIGINAL	(7)
 #define PG_private_ORIGINAL	(11)	/* Has something at ->private */
 #define PG_swapcache_ORIGINAL	(15)	/* Swap page: swp_entry_t in private */
 
+#define PG_buddy_v2_6_17_to_v2_6_26	(19)
+
 #define PAGE_MAPPING_ANON	(1)
 
 #define LSEEKED_BITMAP	(1)




More information about the kexec mailing list