On Sun, Apr 26, 2020 at 11:49:22PM +0200, Guoqing Jiang wrote: > @@ -59,24 +59,18 @@ iomap_page_create(struct inode *inode, struct page *page) > * migrate_page_move_mapping() assumes that pages with private data have > * their count elevated by 1. > */ > - get_page(page); > - set_page_private(page, (unsigned long)iop); > - SetPagePrivate(page); > - return iop; > + return (struct iomap_page *)set_fs_page_private(page, iop); > } This cast is unnecessary. void * will be automatically cast to the appropriate pointer type. > @@ -556,11 +550,9 @@ iomap_migrate_page(struct address_space *mapping, struct page *newpage, > > if (page_has_private(page)) { > ClearPagePrivate(page); > - get_page(newpage); > - set_page_private(newpage, page_private(page)); > + set_fs_page_private(newpage, (void *)page_private(page)); > set_page_private(page, 0); > put_page(page); > - SetPagePrivate(newpage); > } Same comment here as for the btrfs migrate page that Dave reviewed.