aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/migrate.h
diff options
context:
space:
mode:
authorMel Gorman <mgorman@suse.de>2012-10-19 09:07:31 -0400
committerMel Gorman <mgorman@suse.de>2012-12-11 09:28:35 -0500
commit7b2a2d4a18fffac3c4872021529b0657896db788 (patch)
treea0f05be191f12711a774368f6feb15bcd2eebf1a /include/linux/migrate.h
parent5647bc293ab15f66a7b1cda850c5e9d162a6c7c2 (diff)
mm: migrate: Add a tracepoint for migrate_pages
The pgmigrate_success and pgmigrate_fail vmstat counters tells the user about migration activity but not the type or the reason. This patch adds a tracepoint to identify the type of page migration and why the page is being migrated. Signed-off-by: Mel Gorman <mgorman@suse.de> Reviewed-by: Rik van Riel <riel@redhat.com>
Diffstat (limited to 'include/linux/migrate.h')
-rw-r--r--include/linux/migrate.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index ce7e6671968b..9d1c159e2427 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -7,6 +7,15 @@
7 7
8typedef struct page *new_page_t(struct page *, unsigned long private, int **); 8typedef struct page *new_page_t(struct page *, unsigned long private, int **);
9 9
10enum migrate_reason {
11 MR_COMPACTION,
12 MR_MEMORY_FAILURE,
13 MR_MEMORY_HOTPLUG,
14 MR_SYSCALL, /* also applies to cpusets */
15 MR_MEMPOLICY_MBIND,
16 MR_CMA
17};
18
10#ifdef CONFIG_MIGRATION 19#ifdef CONFIG_MIGRATION
11 20
12extern void putback_lru_pages(struct list_head *l); 21extern void putback_lru_pages(struct list_head *l);
@@ -14,7 +23,7 @@ extern int migrate_page(struct address_space *,
14 struct page *, struct page *, enum migrate_mode); 23 struct page *, struct page *, enum migrate_mode);
15extern int migrate_pages(struct list_head *l, new_page_t x, 24extern int migrate_pages(struct list_head *l, new_page_t x,
16 unsigned long private, bool offlining, 25 unsigned long private, bool offlining,
17 enum migrate_mode mode); 26 enum migrate_mode mode, int reason);
18extern int migrate_huge_page(struct page *, new_page_t x, 27extern int migrate_huge_page(struct page *, new_page_t x,
19 unsigned long private, bool offlining, 28 unsigned long private, bool offlining,
20 enum migrate_mode mode); 29 enum migrate_mode mode);
@@ -35,7 +44,7 @@ extern int migrate_huge_page_move_mapping(struct address_space *mapping,
35static inline void putback_lru_pages(struct list_head *l) {} 44static inline void putback_lru_pages(struct list_head *l) {}
36static inline int migrate_pages(struct list_head *l, new_page_t x, 45static inline int migrate_pages(struct list_head *l, new_page_t x,
37 unsigned long private, bool offlining, 46 unsigned long private, bool offlining,
38 enum migrate_mode mode) { return -ENOSYS; } 47 enum migrate_mode mode, int reason) { return -ENOSYS; }
39static inline int migrate_huge_page(struct page *page, new_page_t x, 48static inline int migrate_huge_page(struct page *page, new_page_t x,
40 unsigned long private, bool offlining, 49 unsigned long private, bool offlining,
41 enum migrate_mode mode) { return -ENOSYS; } 50 enum migrate_mode mode) { return -ENOSYS; }