diff --git a/include/trace/events/pagemap.h b/include/trace/events/pagemap.h index e1735fe7c76a..8fd1babae761 100644 --- a/include/trace/events/pagemap.h +++ b/include/trace/events/pagemap.h @@ -27,21 +27,24 @@ TRACE_EVENT(mm_lru_insertion, - TP_PROTO(struct page *page), + TP_PROTO( + struct page *page, + int lru + ), - TP_ARGS(page), + TP_ARGS(page, lru), TP_STRUCT__entry( __field(struct page *, page ) __field(unsigned long, pfn ) - __field(enum lru_list, lru ) + __field(int, lru ) __field(unsigned long, flags ) ), TP_fast_assign( __entry->page = page; __entry->pfn = page_to_pfn(page); - __entry->lru = page_lru(page); + __entry->lru = lru; __entry->flags = trace_pagemap_flags(page); ), diff --git a/mm/swap.c b/mm/swap.c index b92528f24ab8..1eead5355dc2 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -903,6 +903,7 @@ void lru_add_page_tail(struct page *page, struct page *page_tail, static void __pagevec_lru_add_fn(struct page *page, struct lruvec *lruvec, void *arg) { + enum lru_list lru; int was_unevictable = TestClearPageUnevictable(page); VM_BUG_ON_PAGE(PageLRU(page), page); @@ -937,11 +938,13 @@ static void __pagevec_lru_add_fn(struct page *page, struct lruvec *lruvec, smp_mb(); if (page_evictable(page)) { + lru = page_lru(page); update_page_reclaim_stat(lruvec, page_is_file_cache(page), PageActive(page)); if (was_unevictable) count_vm_event(UNEVICTABLE_PGRESCUED); } else { + lru = LRU_UNEVICTABLE; ClearPageActive(page); SetPageUnevictable(page); if (!was_unevictable) @@ -949,7 +952,7 @@ static void __pagevec_lru_add_fn(struct page *page, struct lruvec *lruvec, } add_page_to_lru_list(page, lruvec); - trace_mm_lru_insertion(page); + trace_mm_lru_insertion(page, lru); } /*