mm: memcg: add THP swap out info for anonymous reclaim
[linux-2.6-block.git] / mm / page_io.c
index fe4c21af23f269a6bdc913e967f855007f8ccada..cb559ae324c6723e286701d7fa026644f62bc749 100644 (file)
@@ -208,8 +208,10 @@ int swap_writepage(struct page *page, struct writeback_control *wbc)
 static inline void count_swpout_vm_event(struct folio *folio)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-       if (unlikely(folio_test_pmd_mappable(folio)))
+       if (unlikely(folio_test_pmd_mappable(folio))) {
+               count_memcg_folio_events(folio, THP_SWPOUT, 1);
                count_vm_event(THP_SWPOUT);
+       }
 #endif
        count_vm_events(PSWPOUT, folio_nr_pages(folio));
 }
@@ -278,9 +280,6 @@ static void sio_write_complete(struct kiocb *iocb, long ret)
                        set_page_dirty(page);
                        ClearPageReclaim(page);
                }
-       } else {
-               for (p = 0; p < sio->pages; p++)
-                       count_swpout_vm_event(page_folio(sio->bvec[p].bv_page));
        }
 
        for (p = 0; p < sio->pages; p++)
@@ -296,6 +295,7 @@ static void swap_writepage_fs(struct page *page, struct writeback_control *wbc)
        struct file *swap_file = sis->swap_file;
        loff_t pos = page_file_offset(page);
 
+       count_swpout_vm_event(page_folio(page));
        set_page_writeback(page);
        unlock_page(page);
        if (wbc->swap_plug)