2018-06-05 14:07 GMT+02:00 David Sterba <dsterba@xxxxxxx>: > On Mon, Jun 04, 2018 at 09:31:19PM +0200, Andreas Gruenbacher wrote: >> --- a/fs/iomap.c >> +++ b/fs/iomap.c >> @@ -181,16 +181,22 @@ iomap_write_begin(struct inode *inode, loff_t pos, unsigned len, unsigned flags, >> >> static int >> iomap_write_end(struct inode *inode, loff_t pos, unsigned len, >> - unsigned copied, struct page *page, struct iomap *iomap) >> + unsigned copied, struct page *page, struct iomap *iomap, >> + const struct iomap_ops *ops) >> { >> + typeof(ops->page_write_end) page_write_end = ops->page_write_end; > > Is the reason to use typeof is to avoid repeating the type of > page_write_end? Yes, the type is void (*)(struct inode *, loff_t, unsigned, struct page *, struct iomap *), which is a bit bulky. > As it's only for a temporary variable with 2 uses, > ops->page_write_end does not hurt readability nor is too much typing. > I would not recommend using typeof outside of the justified contexts > like macros or without a good reason. Andreas