On Wed, Mar 10, 2021 at 04:05:45AM +0000, Matthew Wilcox wrote: > On Tue, Mar 09, 2021 at 04:53:39PM +0100, Christoph Hellwig wrote: > > this series first renames the existing alloc_anon_inode to > > alloc_anon_inode_sb to clearly mark it as requiring a superblock. > > > > It then adds a new alloc_anon_inode that works on the anon_inode > > file system super block, thus removing tons of boilerplate code. > > > > The few remainig callers of alloc_anon_inode_sb all use alloc_file_pseudo > > later, but might also be ripe for some cleanup. > > On a somewhat related note, could I get you to look at > drivers/video/fbdev/core/fb_defio.c? > > As far as I can tell, there's no need for fb_deferred_io_aops to exist. > We could just set file->f_mapping->a_ops to NULL, and set_page_dirty() > would do the exact same thing this code does (except it would get the > return value correct).
> But maybe that would make something else go wrong that distinguishes > between page->mapping being NULL and page->mapping->a_ops->foo being NULL? I can't find any place in the kernel that treats a NULL aops different from not having the method it is looking for. > Completely untested patch ... the patch looks mostly good to me. > } > -#ifdef CONFIG_FB_DEFERRED_IO > - if (info->fbdefio) > - fb_deferred_io_open(info, inode, file); > -#endif > + file->f_mapping->a_ops = NULL; But I'd also skip this. Drivers generally do not set aops, but if they do a funtion like this really should not override it. This will require an audit of the callers, though.