Merge tag 'iio-fixes-for-5.12a' of https://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / mm / swap.c
index 2cca714..31b844d 100644 (file)
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -83,9 +83,8 @@ static void __page_cache_release(struct page *page)
                unsigned long flags;
 
                lruvec = lock_page_lruvec_irqsave(page, &flags);
-               VM_BUG_ON_PAGE(!PageLRU(page), page);
-               __ClearPageLRU(page);
-               del_page_from_lru_list(page, lruvec, page_off_lru(page));
+               del_page_from_lru_list(page, lruvec);
+               __clear_page_lru_flags(page);
                unlock_page_lruvec_irqrestore(lruvec, flags);
        }
        __ClearPageWaiters(page);
@@ -229,9 +228,9 @@ static void pagevec_lru_move_fn(struct pagevec *pvec,
 static void pagevec_move_tail_fn(struct page *page, struct lruvec *lruvec)
 {
        if (!PageUnevictable(page)) {
-               del_page_from_lru_list(page, lruvec, page_lru(page));
+               del_page_from_lru_list(page, lruvec);
                ClearPageActive(page);
-               add_page_to_lru_list_tail(page, lruvec, page_lru(page));
+               add_page_to_lru_list_tail(page, lruvec);
                __count_vm_events(PGROTATED, thp_nr_pages(page));
        }
 }
@@ -308,13 +307,11 @@ void lru_note_cost_page(struct page *page)
 static void __activate_page(struct page *page, struct lruvec *lruvec)
 {
        if (!PageActive(page) && !PageUnevictable(page)) {
-               int lru = page_lru_base_type(page);
                int nr_pages = thp_nr_pages(page);
 
-               del_page_from_lru_list(page, lruvec, lru);
+               del_page_from_lru_list(page, lruvec);
                SetPageActive(page);
-               lru += LRU_ACTIVE;
-               add_page_to_lru_list(page, lruvec, lru);
+               add_page_to_lru_list(page, lruvec);
                trace_mm_lru_activate(page);
 
                __count_vm_events(PGACTIVATE, nr_pages);
@@ -519,8 +516,7 @@ void lru_cache_add_inactive_or_unevictable(struct page *page,
  */
 static void lru_deactivate_file_fn(struct page *page, struct lruvec *lruvec)
 {
-       int lru;
-       bool active;
+       bool active = PageActive(page);
        int nr_pages = thp_nr_pages(page);
 
        if (PageUnevictable(page))
@@ -530,10 +526,7 @@ static void lru_deactivate_file_fn(struct page *page, struct lruvec *lruvec)
        if (page_mapped(page))
                return;
 
-       active = PageActive(page);
-       lru = page_lru_base_type(page);
-
-       del_page_from_lru_list(page, lruvec, lru + active);
+       del_page_from_lru_list(page, lruvec);
        ClearPageActive(page);
        ClearPageReferenced(page);
 
@@ -543,14 +536,14 @@ static void lru_deactivate_file_fn(struct page *page, struct lruvec *lruvec)
                 * It can make readahead confusing.  But race window
                 * is _really_ small and  it's non-critical problem.
                 */
-               add_page_to_lru_list(page, lruvec, lru);
+               add_page_to_lru_list(page, lruvec);
                SetPageReclaim(page);
        } else {
                /*
                 * The page's writeback ends up during pagevec
                 * We moves tha page into tail of inactive.
                 */
-               add_page_to_lru_list_tail(page, lruvec, lru);
+               add_page_to_lru_list_tail(page, lruvec);
                __count_vm_events(PGROTATED, nr_pages);
        }
 
@@ -564,13 +557,12 @@ static void lru_deactivate_file_fn(struct page *page, struct lruvec *lruvec)
 static void lru_deactivate_fn(struct page *page, struct lruvec *lruvec)
 {
        if (PageActive(page) && !PageUnevictable(page)) {
-               int lru = page_lru_base_type(page);
                int nr_pages = thp_nr_pages(page);
 
-               del_page_from_lru_list(page, lruvec, lru + LRU_ACTIVE);
+               del_page_from_lru_list(page, lruvec);
                ClearPageActive(page);
                ClearPageReferenced(page);
-               add_page_to_lru_list(page, lruvec, lru);
+               add_page_to_lru_list(page, lruvec);
 
                __count_vm_events(PGDEACTIVATE, nr_pages);
                __count_memcg_events(lruvec_memcg(lruvec), PGDEACTIVATE,
@@ -582,11 +574,9 @@ static void lru_lazyfree_fn(struct page *page, struct lruvec *lruvec)
 {
        if (PageAnon(page) && PageSwapBacked(page) &&
            !PageSwapCache(page) && !PageUnevictable(page)) {
-               bool active = PageActive(page);
                int nr_pages = thp_nr_pages(page);
 
-               del_page_from_lru_list(page, lruvec,
-                                      LRU_INACTIVE_ANON + active);
+               del_page_from_lru_list(page, lruvec);
                ClearPageActive(page);
                ClearPageReferenced(page);
                /*
@@ -595,7 +585,7 @@ static void lru_lazyfree_fn(struct page *page, struct lruvec *lruvec)
                 * anonymous pages
                 */
                ClearPageSwapBacked(page);
-               add_page_to_lru_list(page, lruvec, LRU_INACTIVE_FILE);
+               add_page_to_lru_list(page, lruvec);
 
                __count_vm_events(PGLAZYFREE, nr_pages);
                __count_memcg_events(lruvec_memcg(lruvec), PGLAZYFREE,
@@ -918,9 +908,8 @@ void release_pages(struct page **pages, int nr)
                        if (prev_lruvec != lruvec)
                                lock_batch = 0;
 
-                       VM_BUG_ON_PAGE(!PageLRU(page), page);
-                       __ClearPageLRU(page);
-                       del_page_from_lru_list(page, lruvec, page_off_lru(page));
+                       del_page_from_lru_list(page, lruvec);
+                       __clear_page_lru_flags(page);
                }
 
                __ClearPageWaiters(page);
@@ -958,7 +947,6 @@ EXPORT_SYMBOL(__pagevec_release);
 
 static void __pagevec_lru_add_fn(struct page *page, struct lruvec *lruvec)
 {
-       enum lru_list lru;
        int was_unevictable = TestClearPageUnevictable(page);
        int nr_pages = thp_nr_pages(page);
 
@@ -994,19 +982,17 @@ static void __pagevec_lru_add_fn(struct page *page, struct lruvec *lruvec)
        smp_mb__after_atomic();
 
        if (page_evictable(page)) {
-               lru = page_lru(page);
                if (was_unevictable)
                        __count_vm_events(UNEVICTABLE_PGRESCUED, nr_pages);
        } else {
-               lru = LRU_UNEVICTABLE;
                ClearPageActive(page);
                SetPageUnevictable(page);
                if (!was_unevictable)
                        __count_vm_events(UNEVICTABLE_PGCULLED, nr_pages);
        }
 
-       add_page_to_lru_list(page, lruvec, lru);
-       trace_mm_lru_insertion(page, lru);
+       add_page_to_lru_list(page, lruvec);
+       trace_mm_lru_insertion(page);
 }
 
 /*
@@ -1031,46 +1017,12 @@ void __pagevec_lru_add(struct pagevec *pvec)
        pagevec_reinit(pvec);
 }
 
-/**
- * pagevec_lookup_entries - gang pagecache lookup
- * @pvec:      Where the resulting entries are placed
- * @mapping:   The address_space to search
- * @start:     The starting entry index
- * @nr_entries:        The maximum number of pages
- * @indices:   The cache indices corresponding to the entries in @pvec
- *
- * pagevec_lookup_entries() will search for and return a group of up
- * to @nr_pages pages and shadow entries in the mapping.  All
- * entries are placed in @pvec.  pagevec_lookup_entries() takes a
- * reference against actual pages in @pvec.
- *
- * The search returns a group of mapping-contiguous entries with
- * ascending indexes.  There may be holes in the indices due to
- * not-present entries.
- *
- * Only one subpage of a Transparent Huge Page is returned in one call:
- * allowing truncate_inode_pages_range() to evict the whole THP without
- * cycling through a pagevec of extra references.
- *
- * pagevec_lookup_entries() returns the number of entries which were
- * found.
- */
-unsigned pagevec_lookup_entries(struct pagevec *pvec,
-                               struct address_space *mapping,
-                               pgoff_t start, unsigned nr_entries,
-                               pgoff_t *indices)
-{
-       pvec->nr = find_get_entries(mapping, start, nr_entries,
-                                   pvec->pages, indices);
-       return pagevec_count(pvec);
-}
-
 /**
  * pagevec_remove_exceptionals - pagevec exceptionals pruning
  * @pvec:      The pagevec to prune
  *
- * pagevec_lookup_entries() fills both pages and exceptional radix
- * tree entries into the pagevec.  This function prunes all
+ * find_get_entries() fills both pages and XArray value entries (aka
+ * exceptional entries) into the pagevec.  This function prunes all
  * exceptionals from @pvec without leaving holes, so that it can be
  * passed on to page-only pagevec operations.
  */