Hi,
在 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.
Thanks,
Kuai