Lines Matching defs:iocb
866 static ssize_t ceph_sync_read(struct kiocb *iocb, struct iov_iter *to,
869 struct file *file = iocb->ki_filp;
875 u64 off = iocb->ki_pos;
982 if (off > iocb->ki_pos) {
986 ret = off - iocb->ki_pos;
987 iocb->ki_pos = off;
995 struct kiocb *iocb;
1023 if (aio_req->iocb->ki_flags & IOCB_DIRECT)
1035 loff_t endoff = aio_req->iocb->ki_pos + aio_req->total_len;
1054 aio_req->iocb->ki_complete(aio_req->iocb, ret, 0);
1111 loff_t endoff = aio_req->iocb->ki_pos + rc;
1204 ceph_direct_read_write(struct kiocb *iocb, struct iov_iter *iter,
1208 struct file *file = iocb->ki_filp;
1222 loff_t pos = iocb->ki_pos;
1282 if (pos == iocb->ki_pos && !is_sync_kiocb(iocb) &&
1286 aio_req->iocb = iocb;
1400 if (ret != -EOLDSNAPC && pos > iocb->ki_pos) {
1401 ret = pos - iocb->ki_pos;
1402 iocb->ki_pos = pos;
1415 ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos,
1418 struct file *file = iocb->ki_filp;
1531 iocb->ki_pos = pos;
1543 static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
1545 struct file *filp = iocb->ki_filp;
1551 bool direct_lock = iocb->ki_flags & IOCB_DIRECT;
1558 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, inode);
1572 if (iocb->ki_flags & IOCB_DIRECT)
1580 (iocb->ki_flags & IOCB_DIRECT) ||
1584 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len,
1588 if (!retry_op && (iocb->ki_flags & IOCB_DIRECT)) {
1589 ret = ceph_direct_read_write(iocb, to,
1594 ret = ceph_sync_read(iocb, to, &retry_op);
1602 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len,
1605 ret = generic_file_read_iter(iocb, to);
1647 if (iocb->ki_pos < i_size &&
1648 iocb->ki_pos < PAGE_SIZE) {
1650 iocb->ki_pos + len);
1655 iocb->ki_pos & ~PAGE_MASK,
1656 end - iocb->ki_pos, to);
1657 iocb->ki_pos += ret;
1660 if (iocb->ki_pos < i_size && read < len) {
1662 i_size - iocb->ki_pos);
1664 iocb->ki_pos += ret;
1672 if (retry_op == CHECK_EOF && iocb->ki_pos < i_size &&
1675 ", reading more\n", iocb->ki_pos, i_size);
1700 static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from)
1702 struct file *file = iocb->ki_filp;
1724 if ((iocb->ki_flags & (IOCB_DIRECT | IOCB_APPEND)) == IOCB_DIRECT)
1736 if (iocb->ki_flags & IOCB_APPEND) {
1742 err = generic_write_checks(iocb, from);
1746 pos = iocb->ki_pos;
1802 (iocb->ki_flags & IOCB_DIRECT) || (fi->flags & CEPH_F_SYNC) ||
1822 if (iocb->ki_flags & IOCB_DIRECT)
1823 written = ceph_direct_read_write(iocb, &data, snapc,
1826 written = ceph_sync_write(iocb, &data, pos, snapc);
1844 iocb->ki_pos = pos + written;
1858 if (ceph_quota_is_max_bytes_approaching(inode, iocb->ki_pos))
1876 iocb->ki_flags |= IOCB_DSYNC;
1877 written = generic_write_sync(iocb, written);