Lines Matching refs:iocb
167 static unsigned int dio_bio_write_op(struct kiocb *iocb) in dio_bio_write_op() argument
172 if (iocb->ki_flags & IOCB_DSYNC) in dio_bio_write_op()
188 __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter, in __blkdev_direct_IO_simple() argument
191 struct file *file = iocb->ki_filp; in __blkdev_direct_IO_simple()
194 loff_t pos = iocb->ki_pos; in __blkdev_direct_IO_simple()
217 bio.bi_write_hint = iocb->ki_hint; in __blkdev_direct_IO_simple()
220 bio.bi_ioprio = iocb->ki_ioprio; in __blkdev_direct_IO_simple()
232 bio.bi_opf = dio_bio_write_op(iocb); in __blkdev_direct_IO_simple()
241 if (!(iocb->ki_flags & IOCB_HIPRI) || in __blkdev_direct_IO_simple()
267 struct kiocb *iocb; member
290 struct kiocb *iocb = dio->iocb; in blkdev_bio_end_io() local
295 iocb->ki_pos += ret; in blkdev_bio_end_io()
300 dio->iocb->ki_complete(iocb, ret, 0); in blkdev_bio_end_io()
323 __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, int nr_pages) in __blkdev_direct_IO() argument
325 struct file *file = iocb->ki_filp; in __blkdev_direct_IO()
332 loff_t pos = iocb->ki_pos; in __blkdev_direct_IO()
344 dio->is_sync = is_sync = is_sync_kiocb(iocb); in __blkdev_direct_IO()
348 dio->iocb = iocb; in __blkdev_direct_IO()
358 bio->bi_write_hint = iocb->ki_hint; in __blkdev_direct_IO()
361 bio->bi_ioprio = iocb->ki_ioprio; in __blkdev_direct_IO()
375 bio->bi_opf = dio_bio_write_op(iocb); in __blkdev_direct_IO()
408 if (!(iocb->ki_flags & IOCB_HIPRI) || in __blkdev_direct_IO()
424 blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter) in blkdev_direct_IO() argument
431 if (is_sync_kiocb(iocb) && nr_pages <= BIO_MAX_PAGES) in blkdev_direct_IO()
432 return __blkdev_direct_IO_simple(iocb, iter, nr_pages); in blkdev_direct_IO()
434 return __blkdev_direct_IO(iocb, iter, min(nr_pages, BIO_MAX_PAGES)); in blkdev_direct_IO()
1893 ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) in blkdev_write_iter() argument
1895 struct file *file = iocb->ki_filp; in blkdev_write_iter()
1907 if (iocb->ki_pos >= size) in blkdev_write_iter()
1910 if ((iocb->ki_flags & (IOCB_NOWAIT | IOCB_DIRECT)) == IOCB_NOWAIT) in blkdev_write_iter()
1913 iov_iter_truncate(from, size - iocb->ki_pos); in blkdev_write_iter()
1916 ret = __generic_file_write_iter(iocb, from); in blkdev_write_iter()
1918 ret = generic_write_sync(iocb, ret); in blkdev_write_iter()
1924 ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to) in blkdev_read_iter() argument
1926 struct file *file = iocb->ki_filp; in blkdev_read_iter()
1929 loff_t pos = iocb->ki_pos; in blkdev_read_iter()
1936 return generic_file_read_iter(iocb, to); in blkdev_read_iter()