On Wed, Jul 27, 2022 at 07:58:29AM -0600, Keith Busch wrote: > On Wed, Jul 27, 2022 at 12:12:53AM +0100, Al Viro wrote: > > On Tue, Jul 26, 2022 at 10:38:13AM -0700, Keith Busch wrote: > > > > > + if (S_ISBLK(file_inode(file)->i_mode)) > > > + bdev = I_BDEV(file->f_mapping->host); > > > + else if (S_ISREG(file_inode(file)->i_mode)) > > > + bdev = file->f_inode->i_sb->s_bdev; > > > > *blink* > > > > Just what's the intended use of the second case here? > > ?? > > The use case is same as the first's: dma map the user addresses to the backing > storage. There's two cases here because getting the block_device for a regular > filesystem file is different than a raw block device. Excuse me, but "file on some filesystem + block number on underlying device" makes no sense as an API...