blkdev_write_iter(): saner way to get inode and bdev
authorAl Viro <viro@zeniv.linux.org.uk>
Thu, 11 Apr 2024 14:53:40 +0000 (15:53 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 3 May 2024 06:35:57 +0000 (02:35 -0400)
... same as in other methods - bdev_file_inode() and I_BDEV() of that.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Link: https://lore.kernel.org/r/20240411145346.2516848-5-viro@zeniv.linux.org.uk
Signed-off-by: Christian Brauner <brauner@kernel.org>
block/fops.c

index 679d9b752fe828eb64b67d17e7492469c71e35d3..9d0f36688a5d4ade0bc0f2744a31aedbb8e2cb67 100644 (file)
@@ -668,8 +668,8 @@ static ssize_t blkdev_buffered_write(struct kiocb *iocb, struct iov_iter *from)
 static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
 {
        struct file *file = iocb->ki_filp;
-       struct block_device *bdev = I_BDEV(file->f_mapping->host);
-       struct inode *bd_inode = bdev->bd_inode;
+       struct inode *bd_inode = bdev_file_inode(file);
+       struct block_device *bdev = I_BDEV(bd_inode);
        loff_t size = bdev_nr_bytes(bdev);
        size_t shorted = 0;
        ssize_t ret;