Re: [RFC PATCH 6/9] iomap: use set/clear_fs_page_private

From: Christoph Hellwig
Date: Mon Apr 27 2020 - 01:55:45 EST


On Sun, Apr 26, 2020 at 05:26:31PM -0700, Matthew Wilcox wrote:
> 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.

I also find the pattern eather strange. A:

attach_page_private(page, iop);
return iop;

explains the intent much better.