mm/migrate: Convert writeout() to take a folio
Use a folio throughout this function. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
8faa8ef5dd
commit
2be7fa10c0
21
mm/migrate.c
21
mm/migrate.c
@ -761,11 +761,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,
|
||||
@ -779,25 +778,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;
|
||||
}
|
||||
@ -817,7 +816,7 @@ static int fallback_migrate_folio(struct address_space *mapping,
|
||||
default:
|
||||
return -EBUSY;
|
||||
}
|
||||
return writeout(mapping, &src->page);
|
||||
return writeout(mapping, src);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user