Lines Matching refs:iocb

345 static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size,  in zonefs_file_write_dio_end_io()  argument
348 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_write_dio_end_io()
356 if (!is_sync_kiocb(iocb)) in zonefs_file_write_dio_end_io()
370 if (i_size_read(inode) < iocb->ki_pos + size) { in zonefs_file_write_dio_end_io()
371 zonefs_update_stats(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
372 zonefs_i_size_write(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
413 static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from) in zonefs_write_checks() argument
415 struct file *file = iocb->ki_filp; in zonefs_write_checks()
427 if ((iocb->ki_flags & IOCB_NOWAIT) && !(iocb->ki_flags & IOCB_DIRECT)) in zonefs_write_checks()
430 if (iocb->ki_flags & IOCB_APPEND) { in zonefs_write_checks()
434 iocb->ki_pos = z->z_wpoffset; in zonefs_write_checks()
438 count = zonefs_write_check_limits(file, iocb->ki_pos, in zonefs_write_checks()
457 static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_dio_write() argument
459 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_dio_write()
470 if (zonefs_zone_is_seq(z) && !is_sync_kiocb(iocb) && in zonefs_file_dio_write()
471 (iocb->ki_flags & IOCB_NOWAIT)) in zonefs_file_dio_write()
474 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_dio_write()
481 count = zonefs_write_checks(iocb, from); in zonefs_file_dio_write()
487 if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { in zonefs_file_dio_write()
495 if (iocb->ki_pos != z->z_wpoffset) { in zonefs_file_dio_write()
516 ret = iomap_dio_rw(iocb, from, &zonefs_write_iomap_ops, in zonefs_file_dio_write()
542 static ssize_t zonefs_file_buffered_write(struct kiocb *iocb, in zonefs_file_buffered_write() argument
545 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_buffered_write()
555 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_buffered_write()
562 ret = zonefs_write_checks(iocb, from); in zonefs_file_buffered_write()
566 ret = iomap_file_buffered_write(iocb, from, &zonefs_write_iomap_ops, NULL); in zonefs_file_buffered_write()
573 ret = generic_write_sync(iocb, ret); in zonefs_file_buffered_write()
578 static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_write_iter() argument
580 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_write_iter()
590 if (iocb->ki_pos >= z->z_capacity) in zonefs_file_write_iter()
593 if (iocb->ki_flags & IOCB_DIRECT) { in zonefs_file_write_iter()
594 ssize_t ret = zonefs_file_dio_write(iocb, from); in zonefs_file_write_iter()
600 return zonefs_file_buffered_write(iocb, from); in zonefs_file_write_iter()
603 static int zonefs_file_read_dio_end_io(struct kiocb *iocb, ssize_t size, in zonefs_file_read_dio_end_io() argument
607 zonefs_io_error(file_inode(iocb->ki_filp), false); in zonefs_file_read_dio_end_io()
618 static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in zonefs_file_read_iter() argument
620 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_read_iter()
631 if (iocb->ki_pos >= z->z_capacity) in zonefs_file_read_iter()
634 if (iocb->ki_flags & IOCB_NOWAIT) { in zonefs_file_read_iter()
644 if (iocb->ki_pos >= isize) { in zonefs_file_read_iter()
649 iov_iter_truncate(to, isize - iocb->ki_pos); in zonefs_file_read_iter()
652 if (iocb->ki_flags & IOCB_DIRECT) { in zonefs_file_read_iter()
655 if ((iocb->ki_pos | count) & (sb->s_blocksize - 1)) { in zonefs_file_read_iter()
659 file_accessed(iocb->ki_filp); in zonefs_file_read_iter()
660 ret = iomap_dio_rw(iocb, to, &zonefs_read_iomap_ops, in zonefs_file_read_iter()
663 ret = generic_file_read_iter(iocb, to); in zonefs_file_read_iter()