Lines Matching refs:iocb
2449 static int filemap_update_page(struct kiocb *iocb, in filemap_update_page() argument
2455 if (iocb->ki_flags & IOCB_NOWAIT) { in filemap_update_page()
2464 if (iocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) in filemap_update_page()
2466 if (!(iocb->ki_flags & IOCB_WAITQ)) { in filemap_update_page()
2475 error = __folio_lock_async(folio, iocb->ki_waitq); in filemap_update_page()
2485 if (filemap_range_uptodate(mapping, iocb->ki_pos, iter, folio)) in filemap_update_page()
2489 if (iocb->ki_flags & (IOCB_NOIO | IOCB_NOWAIT | IOCB_WAITQ)) in filemap_update_page()
2492 error = filemap_read_folio(iocb->ki_filp, mapping->a_ops->read_folio, in filemap_update_page()
2549 static int filemap_readahead(struct kiocb *iocb, struct file *file, in filemap_readahead() argument
2555 if (iocb->ki_flags & IOCB_NOIO) in filemap_readahead()
2561 static int filemap_get_pages(struct kiocb *iocb, struct iov_iter *iter, in filemap_get_pages() argument
2564 struct file *filp = iocb->ki_filp; in filemap_get_pages()
2567 pgoff_t index = iocb->ki_pos >> PAGE_SHIFT; in filemap_get_pages()
2572 last_index = DIV_ROUND_UP(iocb->ki_pos + iter->count, PAGE_SIZE); in filemap_get_pages()
2579 if (iocb->ki_flags & IOCB_NOIO) in filemap_get_pages()
2586 if (iocb->ki_flags & (IOCB_NOWAIT | IOCB_WAITQ)) in filemap_get_pages()
2589 iocb->ki_pos >> PAGE_SHIFT, fbatch); in filemap_get_pages()
2597 err = filemap_readahead(iocb, filp, mapping, folio, last_index); in filemap_get_pages()
2602 if ((iocb->ki_flags & IOCB_WAITQ) && in filemap_get_pages()
2604 iocb->ki_flags |= IOCB_NOWAIT; in filemap_get_pages()
2605 err = filemap_update_page(iocb, mapping, iter, folio); in filemap_get_pages()
2641 ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter, in filemap_read() argument
2644 struct file *filp = iocb->ki_filp; in filemap_read()
2653 if (unlikely(iocb->ki_pos >= inode->i_sb->s_maxbytes)) in filemap_read()
2669 if ((iocb->ki_flags & IOCB_WAITQ) && already_read) in filemap_read()
2670 iocb->ki_flags |= IOCB_NOWAIT; in filemap_read()
2672 if (unlikely(iocb->ki_pos >= i_size_read(inode))) in filemap_read()
2675 error = filemap_get_pages(iocb, iter, &fbatch); in filemap_read()
2688 if (unlikely(iocb->ki_pos >= isize)) in filemap_read()
2690 end_offset = min_t(loff_t, isize, iocb->ki_pos + iter->count); in filemap_read()
2702 if (!pos_same_folio(iocb->ki_pos, ra->prev_pos - 1, in filemap_read()
2709 size_t offset = iocb->ki_pos & (fsize - 1); in filemap_read()
2710 size_t bytes = min_t(loff_t, end_offset - iocb->ki_pos, in filemap_read()
2729 iocb->ki_pos += copied; in filemap_read()
2730 ra->prev_pos = iocb->ki_pos; in filemap_read()
2741 } while (iov_iter_count(iter) && iocb->ki_pos < isize && !error); in filemap_read()
2771 generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) in generic_file_read_iter() argument
2779 if (iocb->ki_flags & IOCB_DIRECT) { in generic_file_read_iter()
2780 struct file *file = iocb->ki_filp; in generic_file_read_iter()
2784 if (iocb->ki_flags & IOCB_NOWAIT) { in generic_file_read_iter()
2785 if (filemap_range_needs_writeback(mapping, iocb->ki_pos, in generic_file_read_iter()
2786 iocb->ki_pos + count - 1)) in generic_file_read_iter()
2790 iocb->ki_pos, in generic_file_read_iter()
2791 iocb->ki_pos + count - 1); in generic_file_read_iter()
2798 retval = mapping->a_ops->direct_IO(iocb, iter); in generic_file_read_iter()
2800 iocb->ki_pos += retval; in generic_file_read_iter()
2817 if (iocb->ki_pos >= i_size_read(inode)) in generic_file_read_iter()
2821 return filemap_read(iocb, iter, retval); in generic_file_read_iter()
3634 generic_file_direct_write(struct kiocb *iocb, struct iov_iter *from) in generic_file_direct_write() argument
3636 struct file *file = iocb->ki_filp; in generic_file_direct_write()
3639 loff_t pos = iocb->ki_pos; in generic_file_direct_write()
3647 if (iocb->ki_flags & IOCB_NOWAIT) { in generic_file_direct_write()
3677 written = mapping->a_ops->direct_IO(iocb, from); in generic_file_direct_write()
3707 iocb->ki_pos = pos; in generic_file_direct_write()
3716 ssize_t generic_perform_write(struct kiocb *iocb, struct iov_iter *i) in generic_perform_write() argument
3718 struct file *file = iocb->ki_filp; in generic_perform_write()
3719 loff_t pos = iocb->ki_pos; in generic_perform_write()
3815 ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in __generic_file_write_iter() argument
3817 struct file *file = iocb->ki_filp; in __generic_file_write_iter()
3834 if (iocb->ki_flags & IOCB_DIRECT) { in __generic_file_write_iter()
3837 written = generic_file_direct_write(iocb, from); in __generic_file_write_iter()
3848 pos = iocb->ki_pos; in __generic_file_write_iter()
3849 status = generic_perform_write(iocb, from); in __generic_file_write_iter()
3869 iocb->ki_pos = endbyte + 1; in __generic_file_write_iter()
3881 written = generic_perform_write(iocb, from); in __generic_file_write_iter()
3883 iocb->ki_pos += written; in __generic_file_write_iter()
3904 ssize_t generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in generic_file_write_iter() argument
3906 struct file *file = iocb->ki_filp; in generic_file_write_iter()
3911 ret = generic_write_checks(iocb, from); in generic_file_write_iter()
3913 ret = __generic_file_write_iter(iocb, from); in generic_file_write_iter()
3917 ret = generic_write_sync(iocb, ret); in generic_file_write_iter()