diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/vmscan.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/mm/vmscan.c b/mm/vmscan.c index c99bc418c4cf..3d006d91a526 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
@@ -919,6 +919,9 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
919 | unsigned long *scanned, int order, int mode, int file) | 919 | unsigned long *scanned, int order, int mode, int file) |
920 | { | 920 | { |
921 | unsigned long nr_taken = 0; | 921 | unsigned long nr_taken = 0; |
922 | unsigned long nr_lumpy_taken = 0; | ||
923 | unsigned long nr_lumpy_dirty = 0; | ||
924 | unsigned long nr_lumpy_failed = 0; | ||
922 | unsigned long scan; | 925 | unsigned long scan; |
923 | 926 | ||
924 | for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) { | 927 | for (scan = 0; scan < nr_to_scan && !list_empty(src); scan++) { |
@@ -996,12 +999,25 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, | |||
996 | list_move(&cursor_page->lru, dst); | 999 | list_move(&cursor_page->lru, dst); |
997 | mem_cgroup_del_lru(cursor_page); | 1000 | mem_cgroup_del_lru(cursor_page); |
998 | nr_taken++; | 1001 | nr_taken++; |
1002 | nr_lumpy_taken++; | ||
1003 | if (PageDirty(cursor_page)) | ||
1004 | nr_lumpy_dirty++; | ||
999 | scan++; | 1005 | scan++; |
1006 | } else { | ||
1007 | if (mode == ISOLATE_BOTH && | ||
1008 | page_count(cursor_page)) | ||
1009 | nr_lumpy_failed++; | ||
1000 | } | 1010 | } |
1001 | } | 1011 | } |
1002 | } | 1012 | } |
1003 | 1013 | ||
1004 | *scanned = scan; | 1014 | *scanned = scan; |
1015 | |||
1016 | trace_mm_vmscan_lru_isolate(order, | ||
1017 | nr_to_scan, scan, | ||
1018 | nr_taken, | ||
1019 | nr_lumpy_taken, nr_lumpy_dirty, nr_lumpy_failed, | ||
1020 | mode); | ||
1005 | return nr_taken; | 1021 | return nr_taken; |
1006 | } | 1022 | } |
1007 | 1023 | ||