提交 c19b104a 编写于 作者: C Christoph Hellwig 提交者: Dave Chinner

xfs: fold xfs_vm_do_dio into xfs_vm_direct_IO

Signed-off-by: NChristoph Hellwig <hch@lst.de>
Reviewed-by: NBrian Foster <bfoster@redhat.com>
Signed-off-by: NDave Chinner <david@fromorbit.com>
上级 273dda76
...@@ -1596,38 +1596,30 @@ xfs_end_io_direct_write( ...@@ -1596,38 +1596,30 @@ xfs_end_io_direct_write(
return error; return error;
} }
static inline ssize_t STATIC ssize_t
xfs_vm_do_dio( xfs_vm_direct_IO(
struct inode *inode,
struct kiocb *iocb, struct kiocb *iocb,
struct iov_iter *iter, struct iov_iter *iter,
loff_t offset, loff_t offset)
dio_iodone_t endio,
int flags)
{ {
struct inode *inode = iocb->ki_filp->f_mapping->host;
dio_iodone_t *endio = NULL;
int flags = 0;
struct block_device *bdev; struct block_device *bdev;
if (IS_DAX(inode)) if (iov_iter_rw(iter) == WRITE) {
endio = xfs_end_io_direct_write;
flags = DIO_ASYNC_EXTEND;
}
if (IS_DAX(inode)) {
return dax_do_io(iocb, inode, iter, offset, return dax_do_io(iocb, inode, iter, offset,
xfs_get_blocks_direct, endio, 0); xfs_get_blocks_direct, endio, 0);
}
bdev = xfs_find_bdev_for_inode(inode); bdev = xfs_find_bdev_for_inode(inode);
return __blockdev_direct_IO(iocb, inode, bdev, iter, offset, return __blockdev_direct_IO(iocb, inode, bdev, iter, offset,
xfs_get_blocks_direct, endio, NULL, flags); xfs_get_blocks_direct, endio, NULL, flags);
}
STATIC ssize_t
xfs_vm_direct_IO(
struct kiocb *iocb,
struct iov_iter *iter,
loff_t offset)
{
struct inode *inode = iocb->ki_filp->f_mapping->host;
if (iov_iter_rw(iter) == WRITE)
return xfs_vm_do_dio(inode, iocb, iter, offset,
xfs_end_io_direct_write, DIO_ASYNC_EXTEND);
return xfs_vm_do_dio(inode, iocb, iter, offset, NULL, 0);
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册