On Fri 22-03-24 14:52:16, Yu Kuai wrote: > 在 2024/03/22 14:39, Al Viro 写道: > > On Fri, Mar 22, 2024 at 06:37:18AM +0000, Al Viro wrote: > > > On Thu, Mar 21, 2024 at 08:15:06PM +0800, Yu Kuai wrote: > > > > > > > > blkdev_iomap_begin() etc. may be an arbitrary filesystem block device > > > > > inode. But why can't you use I_BDEV(inode->i_mapping->host) to get to the > > > > > block device instead of your file_bdev(inode->i_private)? I don't see any > > > > > advantage in stashing away that special bdev_file into inode->i_private but > > > > > perhaps I'm missing something... > > > > > > > > > > > > > Because we're goning to remove the 'block_device' from iomap and > > > > buffer_head, and replace it with a 'bdev_file'. > > > > > > What of that? file_inode(file)->f_mapping->host will give you bdevfs inode > > > just fine... > > > > file->f_mapping->host, obviously - sorry. > > . > > Yes, we already get bdev_inode this way, and use it in > blkdev_iomap_begin() and blkdev_get_block(), the problem is that if we > want to let iomap and buffer_head to use bdev_file for raw block fops as > well, we need a 'bdev_file' somehow. Do you mean for operations like bread(), getblk(), or similar, don't you? Frankly I don't find a huge value in this and seeing how clumsy it is getting I'm not convinced it is worth it at this point. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR