Lines Matching refs:iocb
700 ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
702 struct inode *inode = file_inode(iocb->ki_filp);
705 if (iocb->ki_flags & IOCB_NOWAIT) {
712 ret = dax_iomap_rw(iocb, to, &fuse_iomap_ops);
715 /* TODO file_accessed(iocb->f_filp) */
719 static bool file_extending_write(struct kiocb *iocb, struct iov_iter *from)
721 struct inode *inode = file_inode(iocb->ki_filp);
724 ((iocb->ki_pos) >= i_size_read(inode) ||
725 (iocb->ki_pos + iov_iter_count(from) > i_size_read(inode))));
728 static ssize_t fuse_dax_direct_write(struct kiocb *iocb, struct iov_iter *from)
730 struct inode *inode = file_inode(iocb->ki_filp);
731 struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(iocb);
734 ret = fuse_direct_io(&io, from, &iocb->ki_pos, FUSE_DIO_WRITE);
736 fuse_write_update_attr(inode, iocb->ki_pos, ret);
740 ssize_t fuse_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
742 struct inode *inode = file_inode(iocb->ki_filp);
745 if (iocb->ki_flags & IOCB_NOWAIT) {
752 ret = generic_write_checks(iocb, from);
756 ret = file_remove_privs(iocb->ki_filp);
764 if (file_extending_write(iocb, from))
765 ret = fuse_dax_direct_write(iocb, from);
767 ret = dax_iomap_rw(iocb, from, &fuse_iomap_ops);
773 ret = generic_write_sync(iocb, ret);