lkml.org 
[lkml]   [2021]   [Jul]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v14 094/138] iomap: Convert iomap_page_release to take a folio
    Date
    iomap_page_release() was also assuming that it was being passed a
    head page.

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    fs/iomap/buffered-io.c | 18 +++++++++++-------
    1 file changed, 11 insertions(+), 7 deletions(-)

    diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
    index c15a0ac52a32..251ec45426aa 100644
    --- a/fs/iomap/buffered-io.c
    +++ b/fs/iomap/buffered-io.c
    @@ -59,18 +59,18 @@ iomap_page_create(struct inode *inode, struct folio *folio)
    return iop;
    }

    -static void
    -iomap_page_release(struct page *page)
    +static void iomap_page_release(struct folio *folio)
    {
    - struct iomap_page *iop = detach_page_private(page);
    - unsigned int nr_blocks = i_blocks_per_page(page->mapping->host, page);
    + struct iomap_page *iop = folio_detach_private(folio);
    + unsigned int nr_blocks = i_blocks_per_folio(folio->mapping->host,
    + folio);

    if (!iop)
    return;
    WARN_ON_ONCE(atomic_read(&iop->read_bytes_pending));
    WARN_ON_ONCE(atomic_read(&iop->write_bytes_pending));
    WARN_ON_ONCE(bitmap_full(iop->uptodate, nr_blocks) !=
    - PageUptodate(page));
    + folio_test_uptodate(folio));
    kfree(iop);
    }

    @@ -456,6 +456,8 @@ EXPORT_SYMBOL_GPL(iomap_is_partially_uptodate);
    int
    iomap_releasepage(struct page *page, gfp_t gfp_mask)
    {
    + struct folio *folio = page_folio(page);
    +
    trace_iomap_releasepage(page->mapping->host, page_offset(page),
    PAGE_SIZE);

    @@ -466,7 +468,7 @@ iomap_releasepage(struct page *page, gfp_t gfp_mask)
    */
    if (PageDirty(page) || PageWriteback(page))
    return 0;
    - iomap_page_release(page);
    + iomap_page_release(folio);
    return 1;
    }
    EXPORT_SYMBOL_GPL(iomap_releasepage);
    @@ -474,6 +476,8 @@ EXPORT_SYMBOL_GPL(iomap_releasepage);
    void
    iomap_invalidatepage(struct page *page, unsigned int offset, unsigned int len)
    {
    + struct folio *folio = page_folio(page);
    +
    trace_iomap_invalidatepage(page->mapping->host, offset, len);

    /*
    @@ -483,7 +487,7 @@ iomap_invalidatepage(struct page *page, unsigned int offset, unsigned int len)
    if (offset == 0 && len == PAGE_SIZE) {
    WARN_ON_ONCE(PageWriteback(page));
    cancel_dirty_page(page);
    - iomap_page_release(page);
    + iomap_page_release(folio);
    }
    }
    EXPORT_SYMBOL_GPL(iomap_invalidatepage);
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-07-15 06:53    [W:3.107 / U:0.292 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site