Commit 42b1ab97 authored by Al Viro's avatar Al Viro

9p: get rid of v9fs_direct_file_read()

do it in ->direct_IO()...
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e1200fe6
...@@ -251,21 +251,20 @@ static ssize_t ...@@ -251,21 +251,20 @@ static ssize_t
v9fs_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter, loff_t pos) v9fs_direct_IO(int rw, struct kiocb *iocb, struct iov_iter *iter, loff_t pos)
{ {
struct file *file = iocb->ki_filp; struct file *file = iocb->ki_filp;
if (rw == WRITE) { ssize_t n;
ssize_t written; int err = 0;
int err = 0; if (rw & WRITE) {
n = p9_client_write(file->private_data, pos, iter, &err);
written = p9_client_write(file->private_data, pos, iter, &err); if (n) {
if (written) {
struct inode *inode = file_inode(file); struct inode *inode = file_inode(file);
loff_t i_size = i_size_read(inode); loff_t i_size = i_size_read(inode);
if (pos + written > i_size) if (pos + n > i_size)
inode_add_bytes(inode, pos + written - i_size); inode_add_bytes(inode, pos + n - i_size);
return written;
} }
return err; } else {
n = p9_client_read(file->private_data, pos, iter, &err);
} }
return -EINVAL; return n ? n : err;
} }
static int v9fs_write_begin(struct file *filp, struct address_space *mapping, static int v9fs_write_begin(struct file *filp, struct address_space *mapping,
......
...@@ -575,44 +575,6 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf) ...@@ -575,44 +575,6 @@ v9fs_vm_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
return VM_FAULT_NOPAGE; return VM_FAULT_NOPAGE;
} }
static ssize_t
v9fs_direct_read(struct file *filp, char __user *udata, size_t count,
loff_t *offsetp)
{
loff_t size, offset;
struct inode *inode;
struct address_space *mapping;
offset = *offsetp;
mapping = filp->f_mapping;
inode = mapping->host;
if (!count)
return 0;
size = i_size_read(inode);
if (offset < size)
filemap_write_and_wait_range(mapping, offset,
offset + count - 1);
return v9fs_file_read(filp, udata, count, offsetp);
}
/**
* v9fs_cached_file_read - read from a file
* @filp: file pointer to read
* @data: user data buffer to read data into
* @count: size of buffer
* @offset: offset at which to read data
*
*/
static ssize_t
v9fs_cached_file_read(struct file *filp, char __user *data, size_t count,
loff_t *offset)
{
if (filp->f_flags & O_DIRECT)
return v9fs_direct_read(filp, data, count, offset);
return new_sync_read(filp, data, count, offset);
}
/** /**
* v9fs_mmap_file_read - read from a file * v9fs_mmap_file_read - read from a file
* @filp: file pointer to read * @filp: file pointer to read
...@@ -690,7 +652,7 @@ static const struct vm_operations_struct v9fs_mmap_file_vm_ops = { ...@@ -690,7 +652,7 @@ static const struct vm_operations_struct v9fs_mmap_file_vm_ops = {
const struct file_operations v9fs_cached_file_operations = { const struct file_operations v9fs_cached_file_operations = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
.read = v9fs_cached_file_read, .read = new_sync_read,
.write = new_sync_write, .write = new_sync_write,
.read_iter = generic_file_read_iter, .read_iter = generic_file_read_iter,
.write_iter = generic_file_write_iter, .write_iter = generic_file_write_iter,
...@@ -703,7 +665,7 @@ const struct file_operations v9fs_cached_file_operations = { ...@@ -703,7 +665,7 @@ const struct file_operations v9fs_cached_file_operations = {
const struct file_operations v9fs_cached_file_operations_dotl = { const struct file_operations v9fs_cached_file_operations_dotl = {
.llseek = generic_file_llseek, .llseek = generic_file_llseek,
.read = v9fs_cached_file_read, .read = new_sync_read,
.write = new_sync_write, .write = new_sync_write,
.read_iter = generic_file_read_iter, .read_iter = generic_file_read_iter,
.write_iter = generic_file_write_iter, .write_iter = generic_file_write_iter,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment