Lines Matching refs:iocb

628 static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size,  in zonefs_file_write_dio_end_io()  argument
631 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_write_dio_end_io()
648 if (i_size_read(inode) < iocb->ki_pos + size) { in zonefs_file_write_dio_end_io()
649 zonefs_update_stats(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
650 zonefs_i_size_write(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
662 static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_dio_append() argument
664 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_dio_append()
687 bio->bi_write_hint = iocb->ki_hint; in zonefs_file_dio_append()
688 bio->bi_ioprio = iocb->ki_ioprio; in zonefs_file_dio_append()
690 if (iocb->ki_flags & IOCB_DSYNC) in zonefs_file_dio_append()
700 if (iocb->ki_flags & IOCB_HIPRI) in zonefs_file_dio_append()
701 bio_set_polled(bio, iocb); in zonefs_file_dio_append()
705 zonefs_file_write_dio_end_io(iocb, size, ret, 0); in zonefs_file_dio_append()
712 iocb->ki_pos += size; in zonefs_file_dio_append()
729 static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_dio_write() argument
731 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_dio_write()
734 bool sync = is_sync_kiocb(iocb); in zonefs_file_dio_write()
745 (iocb->ki_flags & IOCB_NOWAIT)) in zonefs_file_dio_write()
748 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_dio_write()
755 ret = generic_write_checks(iocb, from); in zonefs_file_dio_write()
759 iov_iter_truncate(from, zi->i_max_size - iocb->ki_pos); in zonefs_file_dio_write()
762 if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { in zonefs_file_dio_write()
770 if (iocb->ki_pos != zi->i_wpoffset) { in zonefs_file_dio_write()
780 ret = zonefs_file_dio_append(iocb, from); in zonefs_file_dio_write()
782 ret = iomap_dio_rw(iocb, from, &zonefs_iomap_ops, in zonefs_file_dio_write()
799 static ssize_t zonefs_file_buffered_write(struct kiocb *iocb, in zonefs_file_buffered_write() argument
802 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_buffered_write()
813 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_buffered_write()
820 ret = generic_write_checks(iocb, from); in zonefs_file_buffered_write()
824 iov_iter_truncate(from, zi->i_max_size - iocb->ki_pos); in zonefs_file_buffered_write()
826 ret = iomap_file_buffered_write(iocb, from, &zonefs_iomap_ops); in zonefs_file_buffered_write()
828 iocb->ki_pos += ret; in zonefs_file_buffered_write()
835 ret = generic_write_sync(iocb, ret); in zonefs_file_buffered_write()
840 static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_write_iter() argument
842 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_write_iter()
851 if (iocb->ki_pos >= ZONEFS_I(inode)->i_max_size) in zonefs_file_write_iter()
854 if (iocb->ki_flags & IOCB_DIRECT) { in zonefs_file_write_iter()
855 ssize_t ret = zonefs_file_dio_write(iocb, from); in zonefs_file_write_iter()
860 return zonefs_file_buffered_write(iocb, from); in zonefs_file_write_iter()
863 static int zonefs_file_read_dio_end_io(struct kiocb *iocb, ssize_t size, in zonefs_file_read_dio_end_io() argument
867 zonefs_io_error(file_inode(iocb->ki_filp), false); in zonefs_file_read_dio_end_io()
878 static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in zonefs_file_read_iter() argument
880 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_read_iter()
890 if (iocb->ki_pos >= zi->i_max_size) in zonefs_file_read_iter()
893 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_read_iter()
903 if (iocb->ki_pos >= isize) { in zonefs_file_read_iter()
908 iov_iter_truncate(to, isize - iocb->ki_pos); in zonefs_file_read_iter()
911 if (iocb->ki_flags & IOCB_DIRECT) { in zonefs_file_read_iter()
914 if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { in zonefs_file_read_iter()
918 file_accessed(iocb->ki_filp); in zonefs_file_read_iter()
919 ret = iomap_dio_rw(iocb, to, &zonefs_iomap_ops, in zonefs_file_read_iter()
920 &zonefs_read_dio_ops, is_sync_kiocb(iocb)); in zonefs_file_read_iter()
922 ret = generic_file_read_iter(iocb, to); in zonefs_file_read_iter()