Lines Matching refs:iocb

2420 static int filemap_update_page(struct kiocb *iocb,  in filemap_update_page()  argument
2426 if (iocb->ki_flags & IOCB_NOWAIT) { in filemap_update_page()
2435 if (iocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) in filemap_update_page()
2437 if (!(iocb->ki_flags & IOCB_WAITQ)) { in filemap_update_page()
2442 error = __lock_page_async(page, iocb->ki_waitq); in filemap_update_page()
2452 if (filemap_range_uptodate(mapping, iocb->ki_pos, iter, page)) in filemap_update_page()
2456 if (iocb->ki_flags & (IOCB_NOIO | IOCB_NOWAIT | IOCB_WAITQ)) in filemap_update_page()
2459 error = filemap_read_page(iocb->ki_filp, mapping, page); in filemap_update_page()
2514 static int filemap_readahead(struct kiocb *iocb, struct file *file, in filemap_readahead() argument
2518 if (iocb->ki_flags & IOCB_NOIO) in filemap_readahead()
2525 static int filemap_get_pages(struct kiocb *iocb, struct iov_iter *iter, in filemap_get_pages() argument
2528 struct file *filp = iocb->ki_filp; in filemap_get_pages()
2531 pgoff_t index = iocb->ki_pos >> PAGE_SHIFT; in filemap_get_pages()
2536 last_index = DIV_ROUND_UP(iocb->ki_pos + iter->count, PAGE_SIZE); in filemap_get_pages()
2543 if (iocb->ki_flags & IOCB_NOIO) in filemap_get_pages()
2550 if (iocb->ki_flags & (IOCB_NOWAIT | IOCB_WAITQ)) in filemap_get_pages()
2553 iocb->ki_pos >> PAGE_SHIFT, pvec); in filemap_get_pages()
2561 err = filemap_readahead(iocb, filp, mapping, page, last_index); in filemap_get_pages()
2566 if ((iocb->ki_flags & IOCB_WAITQ) && pagevec_count(pvec) > 1) in filemap_get_pages()
2567 iocb->ki_flags |= IOCB_NOWAIT; in filemap_get_pages()
2568 err = filemap_update_page(iocb, mapping, iter, page); in filemap_get_pages()
2597 ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter, in filemap_read() argument
2600 struct file *filp = iocb->ki_filp; in filemap_read()
2609 if (unlikely(iocb->ki_pos >= inode->i_sb->s_maxbytes)) in filemap_read()
2625 if ((iocb->ki_flags & IOCB_WAITQ) && already_read) in filemap_read()
2626 iocb->ki_flags |= IOCB_NOWAIT; in filemap_read()
2628 error = filemap_get_pages(iocb, iter, &pvec); in filemap_read()
2641 if (unlikely(iocb->ki_pos >= isize)) in filemap_read()
2643 end_offset = min_t(loff_t, isize, iocb->ki_pos + iter->count); in filemap_read()
2655 if (iocb->ki_pos >> PAGE_SHIFT != in filemap_read()
2662 size_t offset = iocb->ki_pos & (page_size - 1); in filemap_read()
2663 size_t bytes = min_t(loff_t, end_offset - iocb->ki_pos, in filemap_read()
2686 iocb->ki_pos += copied; in filemap_read()
2687 ra->prev_pos = iocb->ki_pos; in filemap_read()
2698 } while (iov_iter_count(iter) && iocb->ki_pos < isize && !error); in filemap_read()
2728 generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) in generic_file_read_iter() argument
2736 if (iocb->ki_flags & IOCB_DIRECT) { in generic_file_read_iter()
2737 struct file *file = iocb->ki_filp; in generic_file_read_iter()
2743 if (iocb->ki_flags & IOCB_NOWAIT) { in generic_file_read_iter()
2744 if (filemap_range_needs_writeback(mapping, iocb->ki_pos, in generic_file_read_iter()
2745 iocb->ki_pos + count - 1)) in generic_file_read_iter()
2749 iocb->ki_pos, in generic_file_read_iter()
2750 iocb->ki_pos + count - 1); in generic_file_read_iter()
2757 retval = mapping->a_ops->direct_IO(iocb, iter); in generic_file_read_iter()
2759 iocb->ki_pos += retval; in generic_file_read_iter()
2774 if (retval < 0 || !count || iocb->ki_pos >= size || in generic_file_read_iter()
2779 return filemap_read(iocb, iter, retval); in generic_file_read_iter()
3629 generic_file_direct_write(struct kiocb *iocb, struct iov_iter *from) in generic_file_direct_write() argument
3631 struct file *file = iocb->ki_filp; in generic_file_direct_write()
3634 loff_t pos = iocb->ki_pos; in generic_file_direct_write()
3642 if (iocb->ki_flags & IOCB_NOWAIT) { in generic_file_direct_write()
3672 written = mapping->a_ops->direct_IO(iocb, from); in generic_file_direct_write()
3702 iocb->ki_pos = pos; in generic_file_direct_write()
3832 ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in __generic_file_write_iter() argument
3834 struct file *file = iocb->ki_filp; in __generic_file_write_iter()
3851 if (iocb->ki_flags & IOCB_DIRECT) { in __generic_file_write_iter()
3854 written = generic_file_direct_write(iocb, from); in __generic_file_write_iter()
3865 status = generic_perform_write(file, from, pos = iocb->ki_pos); in __generic_file_write_iter()
3885 iocb->ki_pos = endbyte + 1; in __generic_file_write_iter()
3897 written = generic_perform_write(file, from, iocb->ki_pos); in __generic_file_write_iter()
3899 iocb->ki_pos += written; in __generic_file_write_iter()
3920 ssize_t generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in generic_file_write_iter() argument
3922 struct file *file = iocb->ki_filp; in generic_file_write_iter()
3927 ret = generic_write_checks(iocb, from); in generic_file_write_iter()
3929 ret = __generic_file_write_iter(iocb, from); in generic_file_write_iter()
3933 ret = generic_write_sync(iocb, ret); in generic_file_write_iter()