On Fri, 4 Mar 2022 17:34:03 +0800 Miaohe Lin <linmiaohe@xxxxxxxxxx> wrote: > When newfolio reaches here, it's guaranteed that PG_writeback is not set > because caller ensures writeback must have been completed. Remove this > unneeded check and cleanup the relevant comment. What guarantees that writeback cannot start after the caller has checked? I see no such check in iomap_migrate_page()? > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -549,18 +549,6 @@ void folio_migrate_flags(struct folio *newfolio, struct folio *folio) > if (!folio_test_hugetlb(folio)) > folio->private = NULL; > > - /* > - * If any waiters have accumulated on the new page then > - * wake them up. > - */ > - if (folio_test_writeback(newfolio)) > - folio_end_writeback(newfolio); > - > - /* > - * PG_readahead shares the same bit with PG_reclaim. The above > - * end_page_writeback() may clear PG_readahead mistakenly, so set the > - * bit after that. > - */ > if (folio_test_readahead(folio)) > folio_set_readahead(newfolio); > folio_migrate_flags() and folio_migrate_copy() are global, export-to-modules functions but have no interface documentation. That was bad of us. I wonder why those two functions are exported to modules anyway.