Commit 3644424d authored by Al Viro's avatar Al Viro

ceph: switch to ->read_iter()

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 3aa2d199
...@@ -795,8 +795,7 @@ static ssize_t ceph_sync_write(struct kiocb *iocb, const struct iovec *iov, ...@@ -795,8 +795,7 @@ static ssize_t ceph_sync_write(struct kiocb *iocb, const struct iovec *iov,
* *
* Hmm, the sync read case isn't actually async... should it be? * Hmm, the sync read case isn't actually async... should it be?
*/ */
static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov, static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
unsigned long nr_segs, loff_t pos)
{ {
struct file *filp = iocb->ki_filp; struct file *filp = iocb->ki_filp;
struct ceph_file_info *fi = filp->private_data; struct ceph_file_info *fi = filp->private_data;
...@@ -806,9 +805,6 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov, ...@@ -806,9 +805,6 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov,
ssize_t ret; ssize_t ret;
int want, got = 0; int want, got = 0;
int checkeof = 0, read = 0; int checkeof = 0, read = 0;
struct iov_iter i;
iov_iter_init(&i, READ, iov, nr_segs, len);
again: again:
dout("aio_read %p %llx.%llx %llu~%u trying to get caps on %p\n", dout("aio_read %p %llx.%llx %llu~%u trying to get caps on %p\n",
...@@ -831,13 +827,13 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov, ...@@ -831,13 +827,13 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov,
ceph_cap_string(got)); ceph_cap_string(got));
/* hmm, this isn't really async... */ /* hmm, this isn't really async... */
ret = ceph_sync_read(iocb, &i, &checkeof); ret = ceph_sync_read(iocb, to, &checkeof);
} else { } else {
dout("aio_read %p %llx.%llx %llu~%u got cap refs on %s\n", dout("aio_read %p %llx.%llx %llu~%u got cap refs on %s\n",
inode, ceph_vinop(inode), pos, (unsigned)len, inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len,
ceph_cap_string(got)); ceph_cap_string(got));
ret = generic_file_read_iter(iocb, &i); ret = generic_file_read_iter(iocb, to);
} }
dout("aio_read %p %llx.%llx dropping cap refs on %s = %d\n", dout("aio_read %p %llx.%llx dropping cap refs on %s = %d\n",
inode, ceph_vinop(inode), ceph_cap_string(got), (int)ret); inode, ceph_vinop(inode), ceph_cap_string(got), (int)ret);
...@@ -854,7 +850,7 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov, ...@@ -854,7 +850,7 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov,
", reading more\n", iocb->ki_pos, ", reading more\n", iocb->ki_pos,
inode->i_size); inode->i_size);
iov_iter_advance(&i, ret); iov_iter_advance(to, ret);
read += ret; read += ret;
len -= ret; len -= ret;
checkeof = 0; checkeof = 0;
...@@ -1257,9 +1253,9 @@ const struct file_operations ceph_file_fops = { ...@@ -1257,9 +1253,9 @@ const struct file_operations ceph_file_fops = {
.open = ceph_open, .open = ceph_open,
.release = ceph_release, .release = ceph_release,
.llseek = ceph_llseek, .llseek = ceph_llseek,
.read = do_sync_read, .read = new_sync_read,
.write = do_sync_write, .write = do_sync_write,
.aio_read = ceph_aio_read, .read_iter = ceph_read_iter,
.aio_write = ceph_aio_write, .aio_write = ceph_aio_write,
.mmap = ceph_mmap, .mmap = ceph_mmap,
.fsync = ceph_fsync, .fsync = ceph_fsync,
......
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