mm/migrate: Convert writeout() to take a folio

Use a folio throughout this function.
Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
parent 8faa8ef5
...@@ -761,11 +761,10 @@ int buffer_migrate_page_norefs(struct address_space *mapping, ...@@ -761,11 +761,10 @@ int buffer_migrate_page_norefs(struct address_space *mapping,
#endif #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 = { struct writeback_control wbc = {
.sync_mode = WB_SYNC_NONE, .sync_mode = WB_SYNC_NONE,
.nr_to_write = 1, .nr_to_write = 1,
...@@ -779,25 +778,25 @@ static int writeout(struct address_space *mapping, struct page *page) ...@@ -779,25 +778,25 @@ static int writeout(struct address_space *mapping, struct page *page)
/* No write method for the address space */ /* No write method for the address space */
return -EINVAL; return -EINVAL;
if (!clear_page_dirty_for_io(page)) if (!folio_clear_dirty_for_io(folio))
/* Someone else already triggered a write */ /* Someone else already triggered a write */
return -EAGAIN; return -EAGAIN;
/* /*
* A dirty page may imply that the underlying filesystem has * A dirty folio may imply that the underlying filesystem has
* the page on some queue. So the page must be clean for * the folio on some queue. So the folio must be clean for
* migration. Writeout may mean we loose the lock and the * migration. Writeout may mean we lose the lock and the
* page state is no longer what we checked for earlier. * folio state is no longer what we checked for earlier.
* At this point we know that the migration attempt cannot * At this point we know that the migration attempt cannot
* be successful. * be successful.
*/ */
remove_migration_ptes(folio, folio, false); 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) if (rc != AOP_WRITEPAGE_ACTIVATE)
/* unlocked. Relock */ /* unlocked. Relock */
lock_page(page); folio_lock(folio);
return (rc < 0) ? -EIO : -EAGAIN; return (rc < 0) ? -EIO : -EAGAIN;
} }
...@@ -817,7 +816,7 @@ static int fallback_migrate_folio(struct address_space *mapping, ...@@ -817,7 +816,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
default: default:
return -EBUSY; return -EBUSY;
} }
return writeout(mapping, &src->page); return writeout(mapping, src);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment