lkml.org 
[lkml]   [2021]   [Mar]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 19/25] mm/page-writeback: Add wait_for_stable_folio
    Date
    Move wait_for_stable_page() into the folio compatibility file.
    wait_for_stable_folio() avoids a call to compound_head() and is 14 bytes
    smaller than wait_for_stable_page() was. The net text size grows by 24
    bytes as a result of this patch.

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    include/linux/pagemap.h | 1 +
    mm/folio-compat.c | 6 ++++++
    mm/page-writeback.c | 17 ++++++++---------
    3 files changed, 15 insertions(+), 9 deletions(-)

    diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
    index 7d797847633c..e7ca8def2f0d 100644
    --- a/include/linux/pagemap.h
    +++ b/include/linux/pagemap.h
    @@ -767,6 +767,7 @@ void wait_on_folio_writeback(struct folio *folio);
    void end_page_writeback(struct page *page);
    void end_folio_writeback(struct folio *folio);
    void wait_for_stable_page(struct page *page);
    +void wait_for_stable_folio(struct folio *folio);

    void page_endio(struct page *page, bool is_write, int err);

    diff --git a/mm/folio-compat.c b/mm/folio-compat.c
    index 6aadecc39fba..335594fe414e 100644
    --- a/mm/folio-compat.c
    +++ b/mm/folio-compat.c
    @@ -29,3 +29,9 @@ void wait_on_page_writeback(struct page *page)
    return wait_on_folio_writeback(page_folio(page));
    }
    EXPORT_SYMBOL_GPL(wait_on_page_writeback);
    +
    +void wait_for_stable_page(struct page *page)
    +{
    + return wait_for_stable_folio(page_folio(page));
    +}
    +EXPORT_SYMBOL_GPL(wait_for_stable_page);
    diff --git a/mm/page-writeback.c b/mm/page-writeback.c
    index 968579452ea4..eef36edc9e0c 100644
    --- a/mm/page-writeback.c
    +++ b/mm/page-writeback.c
    @@ -2841,17 +2841,16 @@ void wait_on_folio_writeback(struct folio *folio)
    EXPORT_SYMBOL_GPL(wait_on_folio_writeback);

    /**
    - * wait_for_stable_page() - wait for writeback to finish, if necessary.
    - * @page: The page to wait on.
    + * wait_for_stable_folio() - wait for writeback to finish, if necessary.
    + * @folio: The folio to wait on.
    *
    - * This function determines if the given page is related to a backing device
    - * that requires page contents to be held stable during writeback. If so, then
    + * This function determines if the given folio is related to a backing device
    + * that requires folio contents to be held stable during writeback. If so, then
    * it will wait for any pending writeback to complete.
    */
    -void wait_for_stable_page(struct page *page)
    +void wait_for_stable_folio(struct folio *folio)
    {
    - page = thp_head(page);
    - if (page->mapping->host->i_sb->s_iflags & SB_I_STABLE_WRITES)
    - wait_on_page_writeback(page);
    + if (folio->page.mapping->host->i_sb->s_iflags & SB_I_STABLE_WRITES)
    + wait_on_folio_writeback(folio);
    }
    -EXPORT_SYMBOL_GPL(wait_for_stable_page);
    +EXPORT_SYMBOL_GPL(wait_for_stable_folio);
    --
    2.30.0
    \
     
     \ /
      Last update: 2021-03-05 05:26    [W:4.761 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site