lkml.org 
[lkml]   [2021]   [Jun]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 40/46] mm/lru: Add folio_add_lru()
    Date
    Reimplement lru_cache_add() as a wrapper around folio_add_lru().
    Saves 159 bytes of kernel text due to removing calls to compound_head().

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    include/linux/swap.h | 1 +
    mm/folio-compat.c | 6 ++++++
    mm/swap.c | 22 +++++++++++-----------
    3 files changed, 18 insertions(+), 11 deletions(-)

    diff --git a/include/linux/swap.h b/include/linux/swap.h
    index 35d3dba422a8..87bfabd69132 100644
    --- a/include/linux/swap.h
    +++ b/include/linux/swap.h
    @@ -345,6 +345,7 @@ extern unsigned long nr_free_buffer_pages(void);
    extern void lru_note_cost(struct lruvec *lruvec, bool file,
    unsigned int nr_pages);
    extern void lru_note_cost_folio(struct folio *);
    +extern void folio_add_lru(struct folio *);
    extern void lru_cache_add(struct page *);
    void mark_page_accessed(struct page *);
    void folio_mark_accessed(struct folio *);
    diff --git a/mm/folio-compat.c b/mm/folio-compat.c
    index 8f35ff91ee15..0a8bdd3f8d91 100644
    --- a/mm/folio-compat.c
    +++ b/mm/folio-compat.c
    @@ -108,3 +108,9 @@ bool redirty_page_for_writepage(struct writeback_control *wbc,
    return folio_redirty_for_writepage(wbc, page_folio(page));
    }
    EXPORT_SYMBOL(redirty_page_for_writepage);
    +
    +void lru_cache_add(struct page *page)
    +{
    + folio_add_lru(page_folio(page));
    +}
    +EXPORT_SYMBOL(lru_cache_add);
    diff --git a/mm/swap.c b/mm/swap.c
    index f3f1ee9f8616..4dfc4bb6ba09 100644
    --- a/mm/swap.c
    +++ b/mm/swap.c
    @@ -457,29 +457,29 @@ void folio_mark_accessed(struct folio *folio)
    EXPORT_SYMBOL(folio_mark_accessed);

    /**
    - * lru_cache_add - add a page to a page list
    - * @page: the page to be added to the LRU.
    + * folio_add_lru - Add a folio to an LRU list.
    + * @folio: The folio to be added to the LRU.
    *
    - * Queue the page for addition to the LRU via pagevec. The decision on whether
    + * Queue the folio for addition to the LRU. The decision on whether
    * to add the page to the [in]active [file|anon] list is deferred until the
    - * pagevec is drained. This gives a chance for the caller of lru_cache_add()
    - * have the page added to the active list using mark_page_accessed().
    + * pagevec is drained. This gives a chance for the caller of folio_add_lru()
    + * have the folio added to the active list using folio_mark_accessed().
    */
    -void lru_cache_add(struct page *page)
    +void folio_add_lru(struct folio *folio)
    {
    struct pagevec *pvec;

    - VM_BUG_ON_PAGE(PageActive(page) && PageUnevictable(page), page);
    - VM_BUG_ON_PAGE(PageLRU(page), page);
    + VM_BUG_ON_FOLIO(folio_active(folio) && folio_unevictable(folio), folio);
    + VM_BUG_ON_FOLIO(folio_lru(folio), folio);

    - get_page(page);
    + folio_get(folio);
    local_lock(&lru_pvecs.lock);
    pvec = this_cpu_ptr(&lru_pvecs.lru_add);
    - if (pagevec_add_and_need_flush(pvec, page))
    + if (pagevec_add_and_need_flush(pvec, &folio->page))
    __pagevec_lru_add(pvec);
    local_unlock(&lru_pvecs.lock);
    }
    -EXPORT_SYMBOL(lru_cache_add);
    +EXPORT_SYMBOL(folio_add_lru);

    /**
    * lru_cache_add_inactive_or_unevictable
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-06-22 14:54    [W:4.207 / U:0.724 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site