pass iov_iter to ->direct_IO()
unmodified, for now Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -1449,9 +1449,8 @@ STATIC ssize_t
|
||||
xfs_vm_direct_IO(
|
||||
int rw,
|
||||
struct kiocb *iocb,
|
||||
const struct iovec *iov,
|
||||
loff_t offset,
|
||||
unsigned long nr_segs)
|
||||
struct iov_iter *iter,
|
||||
loff_t offset)
|
||||
{
|
||||
struct inode *inode = iocb->ki_filp->f_mapping->host;
|
||||
struct block_device *bdev = xfs_find_bdev_for_inode(inode);
|
||||
@@ -1459,7 +1458,7 @@ xfs_vm_direct_IO(
|
||||
ssize_t ret;
|
||||
|
||||
if (rw & WRITE) {
|
||||
size_t size = iov_length(iov, nr_segs);
|
||||
size_t size = iov_length(iter->iov, iter->nr_segs);
|
||||
|
||||
/*
|
||||
* We cannot preallocate a size update transaction here as we
|
||||
@@ -1471,16 +1470,16 @@ xfs_vm_direct_IO(
|
||||
if (offset + size > XFS_I(inode)->i_d.di_size)
|
||||
ioend->io_isdirect = 1;
|
||||
|
||||
ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
|
||||
offset, nr_segs,
|
||||
ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iter->iov,
|
||||
offset, iter->nr_segs,
|
||||
xfs_get_blocks_direct,
|
||||
xfs_end_io_direct_write, NULL,
|
||||
DIO_ASYNC_EXTEND);
|
||||
if (ret != -EIOCBQUEUED && iocb->private)
|
||||
goto out_destroy_ioend;
|
||||
} else {
|
||||
ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov,
|
||||
offset, nr_segs,
|
||||
ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iter->iov,
|
||||
offset, iter->nr_segs,
|
||||
xfs_get_blocks_direct,
|
||||
NULL, NULL, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user