On Tue, Apr 06, 2021 at 03:31:50PM +0100, Christoph Hellwig wrote: > > > As Christoph, I'm not a fan of this :/ > > > > What would you prefer? > > Looking at your full folio series on git.infradead.org, there are a > total of 12 references to non-page members of struct folio, assuming > my crude grep that expects a folio to be named folio did not miss any. Hmm ... I count more in the filesystems: fs/afs/dir.c: struct afs_vnode *dvnode = AFS_FS_I(folio->page.mapping->host); fs/afs/dir.c: _enter("{%lu},%zu,%zu", folio->page.index, offset, length); fs/afs/file.c: _enter("{%lu},%zu,%zu", folio->page.index, offset, length); fs/afs/write.c: folio->page.index); fs/befs/linuxvfs.c: struct inode *inode = folio->page.mapping->host; fs/btrfs/disk-io.c: tree = &BTRFS_I(folio->page.mapping->host)->io_tree; fs/btrfs/disk-io.c: btrfs_warn(BTRFS_I(folio->page.mapping->host)->root->fs_info, fs/btrfs/extent_io.c: struct btrfs_inode *inode = BTRFS_I(folios[0]->page.mapping->host); fs/btrfs/file.c: if (folio->page.mapping != inode->i_mapping) { fs/btrfs/free-space-cache.c: if (folio->page.mapping != inode->i_mapping) { fs/btrfs/inode.c: if (folio->page.mapping != mapping) { fs/btrfs/inode.c: struct btrfs_inode *inode = BTRFS_I(folio->page.mapping->host); fs/buffer.c: spin_lock(&folio->page.mapping->private_lock); fs/buffer.c: spin_unlock(&folio->page.mapping->private_lock); fs/buffer.c: block_in_file = (sector_t)folio->page.index << fs/ceph/addr.c: mapping->host, folio, folio->page.index); fs/ceph/addr.c: mapping->host, folio, folio->page.index, fs/ceph/addr.c: folio->page.private = (unsigned long)snapc; fs/ceph/addr.c: inode = folio->page.mapping->host; fs/ceph/addr.c: inode, folio, folio->page.index, offset, length); fs/ceph/addr.c: inode, folio, folio->page.index); fs/cifs/file.c: struct cifsInodeInfo *cifsi = CIFS_I(folio->page.mapping->host); fs/ext4/inode.c: struct inode *inode = folio->page.mapping->host; fs/f2fs/data.c: struct inode *inode = folio->page.mapping->host; fs/fuse/dir.c: int err = fuse_readlink_page(folio->page.mapping->host, &folio->page); fs/gfs2/aops.c: struct gfs2_sbd *sdp = GFS2_SB(folio->page.mapping->host); fs/iomap/buffered-io.c: unsigned int nr_blocks = i_blocks_per_folio(folio->page.mapping->host, fs/iomap/buffered-io.c: struct inode *inode = folio->page.mapping->host; fs/iomap/buffered-io.c: BUG_ON(folio->page.index); fs/iomap/buffered-io.c: gfp_t gfp = mapping_gfp_constraint(folio->page.mapping, fs/iomap/buffered-io.c: struct inode *inode = folio->page.mapping->host; fs/iomap/buffered-io.c: struct inode *inode = folio->page.mapping->host; fs/iomap/buffered-io.c: trace_iomap_releasepage(folio->page.mapping->host, folio_offset(folio), fs/iomap/buffered-io.c: trace_iomap_invalidatepage(folio->page.mapping->host, offset, len); fs/jffs2/file.c: struct inode *inode = folio->page.mapping->host; fs/mpage.c: struct inode *inode = folio->page.mapping->host; fs/mpage.c: gfp = readahead_gfp_mask(folio->page.mapping); fs/mpage.c: gfp = mapping_gfp_constraint(folio->page.mapping, GFP_KERNEL); fs/mpage.c: block_in_file = (sector_t)folio->page.index << (PAGE_SHIFT - blkbits); fs/mpage.c: prefetchw(&folio->page.flags); fs/nfs/file.c: nfs_fscache_invalidate_page(&folio->page, folio->page.mapping->host); fs/nfs/fscache.c: nfs_i_fscache(inode), folio, folio->page.index, fs/nfs/fscache.c: folio->page.flags, inode); fs/reiserfs/inode.c: struct inode *inode = folio->page.mapping->host; fs/remap_range.c: if (folio1->page.index > folio2->page.index) fs/ubifs/file.c: struct inode *inode = folio->page.mapping->host; fs/xfs/xfs_aops.c: struct inode *inode = folio->page.mapping->host; (I didn't go through my whole series and do the conversion from folio->page.x to folio->x yet)