On Wed, May 25, 2022 at 04:18:20PM +0800, Miaohe Lin wrote: > When non-lru movable page was freed from under us, __ClearPageMovable must > have been done. So we can remove unneeded lock page and PageMovable check > here. Also free_pages_prepare() will clear PG_isolated for us, so we can > further remove ClearPageIsolated as suggested by David. > > Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> > Reviewed-by: Christoph Hellwig <hch@xxxxxx> Reviewed-by: Oscar Salvador <osalvador@xxxxxxx> > --- > mm/migrate.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index e88ebb88fa6f..337336115e43 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1090,15 +1090,10 @@ static int unmap_and_move(new_page_t get_new_page, > return -ENOSYS; > > if (page_count(page) == 1) { > - /* page was freed from under us. So we are done. */ > + /* Page was freed from under us. So we are done. */ > ClearPageActive(page); > ClearPageUnevictable(page); > - if (unlikely(__PageMovable(page))) { > - lock_page(page); > - if (!PageMovable(page)) > - ClearPageIsolated(page); > - unlock_page(page); > - } > + /* free_pages_prepare() will clear PG_isolated. */ > goto out; > } > > -- > 2.23.0 > > -- Oscar Salvador SUSE Labs