Lines Matching defs:iocb
701 ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
703 struct inode *inode = file_inode(iocb->ki_filp);
706 if (iocb->ki_flags & IOCB_NOWAIT) {
713 ret = dax_iomap_rw(iocb, to, &fuse_iomap_ops);
716 /* TODO file_accessed(iocb->f_filp) */
720 static bool file_extending_write(struct kiocb *iocb, struct iov_iter *from)
722 struct inode *inode = file_inode(iocb->ki_filp);
725 ((iocb->ki_pos) >= i_size_read(inode) ||
726 (iocb->ki_pos + iov_iter_count(from) > i_size_read(inode))));
729 static ssize_t fuse_dax_direct_write(struct kiocb *iocb, struct iov_iter *from)
731 struct inode *inode = file_inode(iocb->ki_filp);
732 struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(iocb);
735 ret = fuse_direct_io(&io, from, &iocb->ki_pos, FUSE_DIO_WRITE);
740 fuse_write_update_size(inode, iocb->ki_pos);
744 ssize_t fuse_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
746 struct inode *inode = file_inode(iocb->ki_filp);
749 if (iocb->ki_flags & IOCB_NOWAIT) {
756 ret = generic_write_checks(iocb, from);
760 ret = file_remove_privs(iocb->ki_filp);
768 if (file_extending_write(iocb, from))
769 ret = fuse_dax_direct_write(iocb, from);
771 ret = dax_iomap_rw(iocb, from, &fuse_iomap_ops);
777 ret = generic_write_sync(iocb, ret);