lkml.org 
[lkml]   [2022]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/20] mm/migrate: Convert writeout() to take a folio
    Date
    Use a folio throughout this function.

    Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
    ---
    mm/migrate.c | 21 ++++++++++-----------
    1 file changed, 10 insertions(+), 11 deletions(-)

    diff --git a/mm/migrate.c b/mm/migrate.c
    index d772ce63d7e2..f19246c12fe9 100644
    --- a/mm/migrate.c
    +++ b/mm/migrate.c
    @@ -762,11 +762,10 @@ int buffer_migrate_page_norefs(struct address_space *mapping,
    #endif

    /*
    - * Writeback a page to clean the dirty state
    + * Writeback a folio to clean the dirty state
    */
    -static int writeout(struct address_space *mapping, struct page *page)
    +static int writeout(struct address_space *mapping, struct folio *folio)
    {
    - struct folio *folio = page_folio(page);
    struct writeback_control wbc = {
    .sync_mode = WB_SYNC_NONE,
    .nr_to_write = 1,
    @@ -780,25 +779,25 @@ static int writeout(struct address_space *mapping, struct page *page)
    /* No write method for the address space */
    return -EINVAL;

    - if (!clear_page_dirty_for_io(page))
    + if (!folio_clear_dirty_for_io(folio))
    /* Someone else already triggered a write */
    return -EAGAIN;

    /*
    - * A dirty page may imply that the underlying filesystem has
    - * the page on some queue. So the page must be clean for
    - * migration. Writeout may mean we loose the lock and the
    - * page state is no longer what we checked for earlier.
    + * A dirty folio may imply that the underlying filesystem has
    + * the folio on some queue. So the folio must be clean for
    + * migration. Writeout may mean we lose the lock and the
    + * folio state is no longer what we checked for earlier.
    * At this point we know that the migration attempt cannot
    * be successful.
    */
    remove_migration_ptes(folio, folio, false);

    - rc = mapping->a_ops->writepage(page, &wbc);
    + rc = mapping->a_ops->writepage(&folio->page, &wbc);

    if (rc != AOP_WRITEPAGE_ACTIVATE)
    /* unlocked. Relock */
    - lock_page(page);
    + folio_lock(folio);

    return (rc < 0) ? -EIO : -EAGAIN;
    }
    @@ -818,7 +817,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
    default:
    return -EBUSY;
    }
    - return writeout(mapping, &src->page);
    + return writeout(mapping, src);
    }

    /*
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-06-06 22:48    [W:4.128 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site