From 0e1cb2770027dfe01d429e0318377a997fd57dd0 Mon Sep 17 00:00:00 2001 From: Bing Han Date: Mon, 11 Jul 2022 17:12:21 +0800 Subject: [PATCH] ANDROID: vendor_hook: Add hook in shmem_writepage() Add vendor hook android_vh_set_shmem_page_flag in shmem_writepage to set a flag in page_ext, which indicates that this page is a shmem page, to be used in android_vh_get_swap_page. The shared page should not be reclaimed to the extended memory, ie, the specified swap location. Bug: 234214858 Signed-off-by: Bing Han Change-Id: I33a9007c88b4d8aab3da044c8a05eb45d7e74f3a --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/mm.h | 3 +++ mm/shmem.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index a6c589b266da..c43d1cd06928 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -430,3 +430,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_init_swap_info_struct); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_si_swapinfo); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_si); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_shmem_page_flag); diff --git a/include/trace/hooks/mm.h b/include/trace/hooks/mm.h index 91d9172c6b4a..3f2784c6a0e5 100644 --- a/include/trace/hooks/mm.h +++ b/include/trace/hooks/mm.h @@ -215,6 +215,9 @@ DECLARE_HOOK(android_vh_alloc_si, DECLARE_HOOK(android_vh_free_pages, TP_PROTO(struct page *page, unsigned int order), TP_ARGS(page, order)); +DECLARE_HOOK(android_vh_set_shmem_page_flag, + TP_PROTO(struct page *page), + TP_ARGS(page)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_MM_H */ diff --git a/mm/shmem.c b/mm/shmem.c index 0ed98d632eaa..768c91896036 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -46,6 +46,7 @@ #undef CREATE_TRACE_POINTS #include +#include static struct vfsmount *shm_mnt; @@ -1430,6 +1431,7 @@ static int shmem_writepage(struct page *page, struct writeback_control *wbc) SetPageUptodate(page); } + trace_android_vh_set_shmem_page_flag(page); swap = get_swap_page(page); if (!swap.val) goto redirty;