kiocb
static ssize_t hypfs_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t hypfs_write_iter(struct kiocb *iocb, struct iov_iter *from)
bio = READ_ONCE(kiocb->private);
int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob,
struct kiocb *iocb;
struct kiocb *iocb = dio->iocb;
static ssize_t __blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
static blk_opf_t dio_bio_write_op(struct kiocb *iocb)
struct kiocb *iocb = dio->iocb;
static ssize_t __blkdev_direct_IO_async(struct kiocb *iocb,
static bool blkdev_dio_invalid(struct block_device *bdev, struct kiocb *iocb,
static ssize_t blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static int blkdev_write_begin(const struct kiocb *iocb,
static int blkdev_write_end(const struct kiocb *iocb,
static ssize_t __blkdev_direct_IO_simple(struct kiocb *iocb,
blkdev_direct_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t blkdev_buffered_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
struct kiocb *iocb = areq->iocb;
__maybe_unused static void hl_direct_io_complete(struct kiocb *kio, long ret, long ret2)
struct kiocb kio;
static void lo_rw_aio_complete(struct kiocb *iocb, long ret)
struct kiocb iocb;
ublk_user_copy(struct kiocb *iocb, struct iov_iter *iter, int dir)
static ssize_t ublk_ch_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ublk_ch_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct kiocb iocb;
static void zloop_rw_complete(struct kiocb *iocb, long ret)
static ssize_t vhci_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t read_iter_null(struct kiocb *iocb, struct iov_iter *to)
static ssize_t write_iter_null(struct kiocb *iocb, struct iov_iter *from)
static ssize_t read_iter_zero(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t random_write_iter(struct kiocb *kiocb, struct iov_iter *iter)
static ssize_t urandom_read_iter(struct kiocb *kiocb, struct iov_iter *iter)
static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter)
((kiocb->ki_flags & (IOCB_NOWAIT | IOCB_NOIO)) ||
(kiocb->ki_filp->f_flags & O_NONBLOCK)))
static ssize_t auxdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t auxdev_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = arg->offset;
written = file->f_op->write_iter(&kiocb, &iter);
static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from)
struct hfi1_filedata *fd = kiocb->ki_filp->private_data;
static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from);
static ssize_t tap_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t tap_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t tun_chr_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t tun_chr_read_iter(struct kiocb *iocb, struct iov_iter *to)
static void nvmet_file_io_done(struct kiocb *iocb, long ret)
memset(&req->f.iocb, 0, sizeof(struct kiocb));
struct kiocb *iocb = &req->f.iocb;
ssize_t (*call_iter)(struct kiocb *iocb, struct iov_iter *iter);
struct kiocb iocb;
static ssize_t rpmsg_eptdev_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t rpmsg_eptdev_write_iter(struct kiocb *iocb,
struct kiocb iocb;
static void cmd_rw_aio_complete(struct kiocb *iocb, long ret)
ssize_t redirected_tty_write(struct kiocb *, struct iov_iter *);
static ssize_t file_tty_write(struct file *file, struct kiocb *iocb, struct iov_iter *from)
static ssize_t tty_write(struct kiocb *iocb, struct iov_iter *from)
ssize_t redirected_tty_write(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t tty_read(struct kiocb *, struct iov_iter *);
static ssize_t tty_write(struct kiocb *, struct iov_iter *);
static ssize_t hung_up_tty_read(struct kiocb *iocb, struct iov_iter *to)
static ssize_t hung_up_tty_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t tty_read(struct kiocb *iocb, struct iov_iter *to)
static int ffs_aio_cancel(struct kiocb *kiocb)
struct ffs_io_data *io_data = kiocb->private;
static ssize_t ffs_epfile_write_iter(struct kiocb *kiocb, struct iov_iter *from)
if (!is_sync_kiocb(kiocb)) {
p->kiocb = kiocb;
kiocb->private = p;
kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
res = ffs_epfile_io(kiocb->ki_filp, p);
static ssize_t ffs_epfile_read_iter(struct kiocb *kiocb, struct iov_iter *to)
if (!is_sync_kiocb(kiocb)) {
p->kiocb = kiocb;
kiocb->private = p;
kiocb_set_cancel_fn(kiocb, ffs_aio_cancel);
res = ffs_epfile_io(kiocb->ki_filp, p);
struct kiocb *kiocb;
bool kiocb_has_eventfd = io_data->kiocb->ki_flags & IOCB_EVENTFD;
io_data->kiocb->ki_complete(io_data->kiocb, ret);
struct kiocb *iocb;
static int ep_aio_cancel(struct kiocb *iocb)
struct kiocb *iocb = priv->iocb;
struct kiocb *iocb = req->context;
static ssize_t ep_aio(struct kiocb *iocb,
ep_read_iter(struct kiocb *iocb, struct iov_iter *to)
ep_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t vduse_dev_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t vduse_dev_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t vhost_net_chr_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t vhost_net_chr_write_iter(struct kiocb *iocb,
static ssize_t vhost_vdpa_chr_write_iter(struct kiocb *iocb,
static ssize_t vhost_vsock_chr_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t vhost_vsock_chr_write_iter(struct kiocb *iocb,
v9fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
v9fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static int adfs_write_begin(const struct kiocb *iocb,
affs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static int affs_write_begin(const struct kiocb *iocb,
static int affs_write_end(const struct kiocb *iocb,
static int affs_write_begin_ofs(const struct kiocb *iocb,
static int affs_write_end_ofs(const struct kiocb *iocb,
static ssize_t afs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter);
static ssize_t afs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static void aio_complete_rw(struct kiocb *kiocb, long res)
struct aio_kiocb *iocb = container_of(kiocb, struct aio_kiocb, rw);
if (kiocb->ki_flags & IOCB_WRITE) {
struct inode *inode = file_inode(kiocb->ki_filp);
kiocb_end_write(kiocb);
static int aio_prep_rw(struct kiocb *req, const struct iocb *iocb, int rw_type)
static inline void aio_rw_done(struct kiocb *req, ssize_t ret)
static int aio_read(struct kiocb *req, const struct iocb *iocb,
static int aio_write(struct kiocb *req, const struct iocb *iocb,
static int aio_poll_cancel(struct kiocb *iocb)
struct kiocb rw;
struct aio_kiocb *kiocb;
list_for_each_entry(kiocb, &ctx->active_reqs, ki_list) {
if (kiocb->ki_res.obj == obj) {
ret = kiocb->ki_cancel(&kiocb->rw);
list_del_init(&kiocb->ki_list);
void kiocb_set_cancel_fn(struct kiocb *iocb, kiocb_cancel_fn *cancel)
struct kiocb *iocb = &aio->iocb;
struct kiocb *orig_iocb = aio->orig_iocb;
static void backing_aio_rw_complete(struct kiocb *iocb, long res)
struct kiocb *orig_iocb = aio->orig_iocb;
static void backing_aio_queue_completion(struct kiocb *iocb, long res)
static int backing_aio_init_wq(struct kiocb *iocb)
struct kiocb *iocb, int flags)
struct kiocb *iocb, int flags,
struct kiocb *iocb, int flags,
void (*end_write)(struct kiocb *, ssize_t))
struct kiocb *iocb, int flags,
ssize_t backing_file_splice_read(struct file *in, struct kiocb *iocb,
struct file *out, struct kiocb *iocb,
struct kiocb iocb;
struct kiocb *orig_iocb;
void (*end_write)(struct kiocb *iocb, ssize_t);
static int bfs_write_begin(const struct kiocb *iocb,
ssize_t btrfs_encoded_read(struct kiocb *iocb, struct iov_iter *iter,
ssize_t btrfs_encoded_read_regular(struct kiocb *iocb, struct iov_iter *iter,
ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
ssize_t btrfs_direct_read(struct kiocb *iocb, struct iov_iter *to)
static ssize_t btrfs_dio_read(struct kiocb *iocb, struct iov_iter *iter,
static struct iomap_dio *btrfs_dio_write(struct kiocb *iocb, struct iov_iter *iter,
ssize_t btrfs_direct_write(struct kiocb *iocb, struct iov_iter *from)
ssize_t btrfs_direct_write(struct kiocb *iocb, struct iov_iter *from);
ssize_t btrfs_direct_read(struct kiocb *iocb, struct iov_iter *to);
struct kiocb;
int btrfs_write_check(struct kiocb *iocb, size_t count)
ssize_t btrfs_buffered_write(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t btrfs_encoded_write(struct kiocb *iocb, struct iov_iter *from,
ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
static ssize_t btrfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t btrfs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
struct kiocb;
ssize_t btrfs_do_write_iter(struct kiocb *iocb, struct iov_iter *from,
int btrfs_write_check(struct kiocb *iocb, size_t count);
ssize_t btrfs_buffered_write(struct kiocb *iocb, struct iov_iter *i);
struct kiocb *iocb,
ssize_t btrfs_encoded_read_regular(struct kiocb *iocb, struct iov_iter *iter,
ssize_t btrfs_encoded_read(struct kiocb *iocb, struct iov_iter *iter,
ssize_t btrfs_do_encoded_write(struct kiocb *iocb, struct iov_iter *from,
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = pos;
ret = btrfs_encoded_read(&kiocb, &iter, &args, &cached_state,
start = ALIGN_DOWN(kiocb.ki_pos, fs_info->sectorsize);
ret = btrfs_encoded_read_regular(&kiocb, &iter, start, lockend,
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
ret = kiocb_set_rw_flags(&kiocb, 0, WRITE);
kiocb.ki_pos = pos;
ret = btrfs_do_write_iter(&kiocb, &iter, &args);
struct kiocb iocb;
static int btrfs_uring_read_extent(struct kiocb *iocb, struct iov_iter *iter,
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = pos;
kiocb.ki_flags |= IOCB_NOWAIT;
ret = btrfs_encoded_read(&kiocb, &data->iter, &data->args, &cached_state,
ret = btrfs_uring_read_extent(&kiocb, &data->iter, start, lockend,
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
ret = kiocb_set_rw_flags(&kiocb, 0, WRITE);
kiocb.ki_pos = pos;
ret = btrfs_do_write_iter(&kiocb, &data->iter, &data->args);
int generic_write_end(const struct kiocb *iocb, struct address_space *mapping,
static int cont_expand_zero(const struct kiocb *iocb,
int cont_write_begin(const struct kiocb *iocb, struct address_space *mapping,
struct kiocb iocb;
static void cachefiles_write_complete(struct kiocb *iocb, long ret)
static void cachefiles_read_complete(struct kiocb *iocb, long ret)
static ssize_t cachefiles_ondemand_fd_write_iter(struct kiocb *kiocb,
struct cachefiles_object *object = kiocb->ki_filp->private_data;
loff_t pos = kiocb->ki_pos;
kiocb->ki_pos += ret;
static int ceph_write_begin(const struct kiocb *iocb,
static int ceph_write_end(const struct kiocb *iocb,
static ssize_t ceph_sync_read(struct kiocb *iocb, struct iov_iter *to,
struct kiocb *iocb;
ceph_direct_read_write(struct kiocb *iocb, struct iov_iter *iter,
ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos,
static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from)
coda_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t configfs_bin_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t configfs_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t configfs_bin_write_iter(struct kiocb *iocb,
static ssize_t configfs_read_iter(struct kiocb *iocb, struct iov_iter *to)
dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter,
ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
struct kiocb *iocb; /* kiocb */
static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb,
static int ecryptfs_write_begin(const struct kiocb *iocb,
static int ecryptfs_write_end(const struct kiocb *iocb,
static ssize_t erofs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
struct kiocb iocb;
static void erofs_fileio_ki_complete(struct kiocb *iocb, long ret)
static ssize_t erofs_ishare_file_read_iter(struct kiocb *iocb,
struct kiocb dedup_iocb;
static ssize_t eventfd_read(struct kiocb *iocb, struct iov_iter *to)
static ssize_t exfat_file_write_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t exfat_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static int exfat_write_begin(const struct kiocb *iocb,
static int exfat_write_end(const struct kiocb *iocb,
static ssize_t exfat_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t ext2_dio_read_iter(struct kiocb *iocb, struct iov_iter *to)
static int ext2_dio_write_end_io(struct kiocb *iocb, ssize_t size,
static ssize_t ext2_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t ext2_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ext2_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t ext2_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ext2_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
ext2_write_begin(const struct kiocb *iocb, struct address_space *mapping,
static int ext2_write_end(const struct kiocb *iocb,
TP_PROTO(struct kiocb *iocb, struct iov_iter *iter, ssize_t ret),
TP_PROTO(struct kiocb *iocb, struct iov_iter *iter, ssize_t ret), \
TP_PROTO(struct kiocb *iocb, ssize_t size, int ret),
static ssize_t ext4_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ext4_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ext4_generic_write_checks(struct kiocb *iocb,
static ssize_t ext4_write_checks(struct kiocb *iocb, struct iov_iter *from)
static ssize_t ext4_buffered_write_iter(struct kiocb *iocb,
static int ext4_dio_write_end_io(struct kiocb *iocb, ssize_t size,
static ssize_t ext4_dio_write_checks(struct kiocb *iocb, struct iov_iter *from,
static ssize_t ext4_dio_write_iter(struct kiocb *iocb, struct iov_iter *from)
static bool ext4_should_use_dio(struct kiocb *iocb, struct iov_iter *iter)
ext4_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t ext4_dio_read_iter(struct kiocb *iocb, struct iov_iter *to)
static int ext4_write_begin(const struct kiocb *iocb,
static int ext4_write_end(const struct kiocb *iocb,
static int ext4_journalled_write_end(const struct kiocb *iocb,
static int ext4_da_write_begin(const struct kiocb *iocb,
static int ext4_da_write_end(const struct kiocb *iocb,
static int f2fs_write_begin(const struct kiocb *iocb,
static int f2fs_write_end(const struct kiocb *iocb,
static bool f2fs_should_use_dio(struct inode *inode, struct kiocb *iocb,
static int f2fs_dio_read_end_io(struct kiocb *iocb, ssize_t size, int error,
static ssize_t f2fs_dio_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t f2fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t f2fs_write_checks(struct kiocb *iocb, struct iov_iter *from)
static int f2fs_preallocate_blocks(struct kiocb *iocb, struct iov_iter *iter,
static ssize_t f2fs_buffered_write_iter(struct kiocb *iocb,
static int f2fs_dio_write_end_io(struct kiocb *iocb, ssize_t size, int error,
static ssize_t f2fs_dio_write_iter(struct kiocb *iocb, struct iov_iter *from,
static ssize_t f2fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static int fat_write_begin(const struct kiocb *iocb,
static int fat_write_end(const struct kiocb *iocb,
static ssize_t fat_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t cuse_write_iter(struct kiocb *kiocb, struct iov_iter *from)
struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb);
static ssize_t cuse_read_iter(struct kiocb *kiocb, struct iov_iter *to)
struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(kiocb);
ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to)
static bool file_extending_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t fuse_dax_direct_write(struct kiocb *iocb, struct iov_iter *from)
ssize_t fuse_dax_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t fuse_dev_read(struct kiocb *iocb, struct iov_iter *to)
static ssize_t fuse_dev_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t fuse_cache_read_iter(struct kiocb *iocb, struct iov_iter *to)
static unsigned int fuse_write_flags(struct kiocb *iocb)
struct kiocb *iocb = ia->io->iocb;
struct kiocb *iocb, struct inode *inode,
static ssize_t fuse_perform_write(struct kiocb *iocb, struct iov_iter *ii)
static bool fuse_io_past_eof(struct kiocb *iocb, struct iov_iter *iter)
static bool fuse_dio_wr_exclusive_lock(struct kiocb *iocb, struct iov_iter *from)
static void fuse_dio_lock(struct kiocb *iocb, struct iov_iter *from,
static void fuse_dio_unlock(struct kiocb *iocb, bool exclusive)
static ssize_t fuse_cache_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter);
static ssize_t fuse_direct_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t fuse_direct_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to);
ssize_t fuse_dax_write_iter(struct kiocb *iocb, struct iov_iter *from);
ssize_t fuse_passthrough_read_iter(struct kiocb *iocb, struct iov_iter *iter);
ssize_t fuse_passthrough_write_iter(struct kiocb *iocb, struct iov_iter *iter);
struct kiocb *iocb;
struct kiocb iocb;
static void fuse_passthrough_end_write(struct kiocb *iocb, ssize_t ret)
ssize_t fuse_passthrough_read_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t fuse_passthrough_write_iter(struct kiocb *iocb,
struct kiocb iocb;
static ssize_t gfs2_file_buffered_write(struct kiocb *iocb,
static ssize_t gfs2_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct kiocb *iocb,
static ssize_t gfs2_file_direct_read(struct kiocb *iocb, struct iov_iter *to,
static ssize_t gfs2_file_direct_write(struct kiocb *iocb, struct iov_iter *from,
static ssize_t gfs2_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
int hfs_write_begin(const struct kiocb *iocb, struct address_space *mapping,
static ssize_t hfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
int hfs_write_begin(const struct kiocb *iocb, struct address_space *mapping,
int hfsplus_write_begin(const struct kiocb *iocb,
static ssize_t hfsplus_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
int hfsplus_write_begin(const struct kiocb *iocb,
static int hostfs_write_begin(const struct kiocb *iocb,
static int hostfs_write_end(const struct kiocb *iocb,
static int hpfs_write_begin(const struct kiocb *iocb,
static int hpfs_write_end(const struct kiocb *iocb,
static ssize_t hugetlbfs_read_iter(struct kiocb *iocb, struct iov_iter *to)
static int hugetlbfs_write_begin(const struct kiocb *iocb,
static int hugetlbfs_write_end(const struct kiocb *iocb,
int kiocb_modified(struct kiocb *iocb)
iomap_file_buffered_write(struct kiocb *iocb, struct iov_iter *i,
struct kiocb *iocb = dio->iocb;
struct kiocb *iocb = dio->iocb;
struct kiocb *iocb = dio->iocb;
struct kiocb *iocb;
struct kiocb *iocb = dio->iocb;
__iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
TP_PROTO(struct kiocb *iocb, struct iov_iter *iter,
TP_PROTO(struct kiocb *iocb, int error, ssize_t ret),
static int jffs2_write_begin(const struct kiocb *iocb,
static int jffs2_write_end(const struct kiocb *iocb,
static int jffs2_write_end(const struct kiocb *iocb,
static int jffs2_write_begin(const struct kiocb *iocb,
static int jfs_write_begin(const struct kiocb *iocb,
static int jfs_write_end(const struct kiocb *iocb,
static ssize_t jfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t kernfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t kernfs_fop_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t kernfs_fop_write_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
ssize_t direct_write_fallback(struct kiocb *iocb, struct iov_iter *iter,
int simple_write_begin(const struct kiocb *iocb, struct address_space *mapping,
static int simple_write_end(const struct kiocb *iocb,
static int minix_write_begin(const struct kiocb *iocb,
ssize_t netfs_buffered_read_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t netfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t netfs_perform_write(struct kiocb *iocb, struct iov_iter *iter,
ssize_t netfs_buffered_write_iter_locked(struct kiocb *iocb, struct iov_iter *from,
ssize_t netfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
ssize_t netfs_unbuffered_read_iter_locked(struct kiocb *iocb, struct iov_iter *iter)
ssize_t netfs_unbuffered_read_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t netfs_unbuffered_write_iter_locked(struct kiocb *iocb, struct iov_iter *iter,
ssize_t netfs_unbuffered_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct netfs_io_request *netfs_begin_writethrough(struct kiocb *iocb, size_t len);
struct netfs_io_request *netfs_begin_writethrough(struct kiocb *iocb, size_t len)
int nfs_swap_rw(struct kiocb *iocb, struct iov_iter *iter)
ssize_t nfs_file_direct_read(struct kiocb *iocb, struct iov_iter *iter,
ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter,
nfs_file_read(struct kiocb *iocb, struct iov_iter *to)
static int nfs_write_begin(const struct kiocb *iocb,
static int nfs_write_end(const struct kiocb *iocb,
ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
ssize_t nfs_file_read(struct kiocb *, struct iov_iter *);
ssize_t nfs_file_write(struct kiocb *, struct iov_iter *);
struct kiocb * iocb; /* controlling i/o request */
init_sync_kiocb(&iocb->kiocb, file);
iocb->kiocb.ki_pos = hdr->args.offset;
iocb->kiocb.ki_flags &= ~IOCB_APPEND;
iocb->kiocb.ki_complete = NULL;
struct kiocb kiocb;
iocb->kiocb.ki_flags |= IOCB_DSYNC|IOCB_SYNC;
iocb->kiocb.ki_pos = hdr->args.offset;
iocb->kiocb.ki_flags &= ~(IOCB_DSYNC | IOCB_SYNC | IOCB_DIRECT);
iocb->kiocb.ki_complete = NULL;
struct file *filp = iocb->kiocb.ki_filp;
if ((iocb->kiocb.ki_flags & IOCB_DIRECT) && status == -EINVAL) {
static void nfs_local_read_aio_complete(struct kiocb *kiocb, long ret)
container_of(kiocb, struct nfs_local_kiocb, kiocb);
struct file *filp = iocb->kiocb.ki_filp;
iocb->kiocb.ki_flags |= IOCB_DIRECT;
iocb->kiocb.ki_complete = nfs_local_read_aio_complete;
iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
status = filp->f_op->read_iter(&iocb->kiocb, &iocb->iters[i]);
struct file *filp = iocb->kiocb.ki_filp;
if ((iocb->kiocb.ki_flags & IOCB_DIRECT) && status == -EINVAL) {
static void nfs_local_write_aio_complete(struct kiocb *kiocb, long ret)
container_of(kiocb, struct nfs_local_kiocb, kiocb);
struct file *filp = iocb->kiocb.ki_filp;
iocb->kiocb.ki_flags |= IOCB_DIRECT;
iocb->kiocb.ki_complete = nfs_local_write_aio_complete;
iocb->kiocb.ki_flags &= ~IOCB_DIRECT;
status = filp->f_op->write_iter(&iocb->kiocb, &iocb->iters[i]);
iocb->kiocb.ki_flags |= IOCB_DSYNC;
iocb->kiocb.ki_flags |= IOCB_DSYNC|IOCB_SYNC;
const struct kiocb *iocb,
const struct kiocb *iocb, \
struct kiocb kiocb;
init_sync_kiocb(&kiocb, nf->nf_file);
kiocb.ki_flags |= IOCB_DIRECT;
kiocb.ki_pos = dio_start;
host_err = vfs_iocb_iter_read(nf->nf_file, &kiocb, &iter);
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_flags = IOCB_DONTCACHE;
kiocb.ki_pos = offset;
host_err = vfs_iocb_iter_read(file, &kiocb, &iter);
struct kiocb *iocb)
unsigned int nvecs, struct kiocb *iocb,
unsigned long *cnt, struct kiocb *kiocb)
kiocb, *cnt, segments);
kiocb->ki_flags = segments[i].flags;
if (kiocb->ki_flags & IOCB_DIRECT)
trace_nfsd_write_direct(rqstp, fhp, kiocb->ki_pos,
trace_nfsd_write_vector(rqstp, fhp, kiocb->ki_pos,
kiocb->ki_flags |= IOCB_DONTCACHE;
host_err = vfs_iocb_iter_write(file, kiocb, &segments[i].iter);
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = offset;
kiocb.ki_flags |= IOCB_DSYNC | IOCB_SYNC;
kiocb.ki_flags |= IOCB_DSYNC;
cnt, &kiocb);
kiocb.ki_flags |= IOCB_DONTCACHE;
host_err = vfs_iocb_iter_write(file, &kiocb, &iter);
static int nilfs_write_begin(const struct kiocb *iocb,
static int nilfs_write_end(const struct kiocb *iocb,
nilfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t ntfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static bool ntfs_should_use_dio(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t ntfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from)
static int ocfs2_write_begin(const struct kiocb *iocb,
static int ocfs2_write_end(const struct kiocb *iocb,
static int ocfs2_dio_end_io(struct kiocb *iocb,
static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static inline void ocfs2_iocb_set_rw_locked(struct kiocb *iocb, int level)
static ssize_t ocfs2_file_write_iter(struct kiocb *iocb,
static ssize_t ocfs2_file_read_iter(struct kiocb *iocb,
static int omfs_write_begin(const struct kiocb *iocb,
static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
static ssize_t orangefs_file_read_iter(struct kiocb *iocb,
static ssize_t orangefs_file_write_iter(struct kiocb *iocb,
static int orangefs_write_begin(const struct kiocb *iocb,
static int orangefs_write_end(const struct kiocb *iocb,
static ssize_t orangefs_direct_IO(struct kiocb *iocb,
static void ovl_file_end_write(struct kiocb *iocb, ssize_t ret)
static ssize_t ovl_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t ovl_write_iter(struct kiocb *iocb, struct iov_iter *iter)
struct kiocb iocb;
struct kiocb iocb;
anon_pipe_read(struct kiocb *iocb, struct iov_iter *to)
fifo_pipe_read(struct kiocb *iocb, struct iov_iter *to)
anon_pipe_write(struct kiocb *iocb, struct iov_iter *from)
fifo_pipe_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t proc_reg_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t read_kcore_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t proc_sys_call_handler(struct kiocb *iocb, struct iov_iter *iter,
static ssize_t proc_sys_read(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t proc_sys_write(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t read_vmcore(struct kiocb *iocb, struct iov_iter *iter)
int generic_write_checks_count(struct kiocb *iocb, loff_t *count)
ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from)
int generic_atomic_write_valid(struct kiocb *iocb, struct iov_iter *iter)
struct kiocb kiocb;
init_sync_kiocb(&kiocb, filp);
kiocb.ki_pos = (ppos ? *ppos : 0);
ret = filp->f_op->read_iter(&kiocb, &iter);
*ppos = kiocb.ki_pos;
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = pos ? *pos : 0;
ret = file->f_op->read_iter(&kiocb, &iter);
*pos = kiocb.ki_pos;
struct kiocb kiocb;
init_sync_kiocb(&kiocb, filp);
kiocb.ki_pos = (ppos ? *ppos : 0);
ret = filp->f_op->write_iter(&kiocb, &iter);
*ppos = kiocb.ki_pos;
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = pos ? *pos : 0;
ret = file->f_op->write_iter(&kiocb, from);
*pos = kiocb.ki_pos;
struct kiocb kiocb;
init_sync_kiocb(&kiocb, filp);
ret = kiocb_set_rw_flags(&kiocb, flags, type);
kiocb.ki_pos = (ppos ? *ppos : 0);
ret = filp->f_op->read_iter(&kiocb, iter);
ret = filp->f_op->write_iter(&kiocb, iter);
*ppos = kiocb.ki_pos;
ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,
ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,
struct kiocb kiocb;
init_sync_kiocb(&kiocb, file);
kiocb.ki_pos = *ppos;
ret = seq_read_iter(&kiocb, &iter);
*ppos = kiocb.ki_pos;
ssize_t seq_read_iter(struct kiocb *iocb, struct iov_iter *iter)
static ssize_t signalfd_read_iter(struct kiocb *iocb, struct iov_iter *to)
ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from);
ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter);
ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
cifs_writev(struct kiocb *iocb, struct iov_iter *from)
cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from)
ssize_t cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter)
ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to)
static int cifs_swap_rw(struct kiocb *iocb, struct iov_iter *iter)
struct kiocb kiocb;
init_sync_kiocb(&kiocb, in);
kiocb.ki_pos = *ppos;
ret = in->f_op->read_iter(&kiocb, &to);
*ppos = kiocb.ki_pos;
struct kiocb kiocb;
init_sync_kiocb(&kiocb, out);
kiocb.ki_pos = sd.pos;
ret = out->f_op->write_iter(&kiocb, &from);
sd.pos = kiocb.ki_pos;
static ssize_t timerfd_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t ubifs_write_iter(struct kiocb *iocb, struct iov_iter *from)
static int ubifs_write_begin(const struct kiocb *iocb,
static int ubifs_write_end(const struct kiocb *iocb,
static ssize_t udf_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static int udf_write_begin(const struct kiocb *iocb,
static int udf_write_end(const struct kiocb *iocb,
static ssize_t udf_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
static int ufs_write_begin(const struct kiocb *iocb,
static int ufs_write_end(const struct kiocb *iocb,
static ssize_t userfaultfd_read_iter(struct kiocb *iocb, struct iov_iter *to)
static int vboxsf_write_end(const struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
struct kiocb *iocb,
TP_PROTO(struct kiocb *iocb, struct iov_iter *iter),
TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), \
static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size,
static ssize_t zonefs_write_checks(struct kiocb *iocb, struct iov_iter *from)
static ssize_t zonefs_file_dio_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t zonefs_file_buffered_write(struct kiocb *iocb,
static ssize_t zonefs_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static int zonefs_file_read_dio_end_io(struct kiocb *iocb, ssize_t size,
static ssize_t zonefs_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
struct kiocb *iocb;
typedef int (kiocb_cancel_fn)(struct kiocb *);
void kiocb_set_cancel_fn(struct kiocb *req, kiocb_cancel_fn *cancel);
static inline void kiocb_set_cancel_fn(struct kiocb *req,
struct kiocb;
void (*end_write)(struct kiocb *iocb, ssize_t);
struct kiocb *iocb, int flags,
struct kiocb *iocb, int flags,
ssize_t backing_file_splice_read(struct file *in, struct kiocb *iocb,
struct file *out, struct kiocb *iocb,
static inline void bio_set_polled(struct bio *bio, struct kiocb *kiocb)
if (kiocb->ki_flags & IOCB_NOWAIT)
int iocb_bio_iopoll(struct kiocb *kiocb, struct io_comp_batch *iob,
struct kiocb;
int generic_write_end(const struct kiocb *, struct address_space *,
int cont_write_begin(const struct kiocb *, struct address_space *, loff_t,
ssize_t dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter,
ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
int (*iopoll)(struct kiocb *kiocb, struct io_comp_batch *,
static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
*kiocb = (struct kiocb) {
static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
*kiocb = (struct kiocb) {
int kiocb_modified(struct kiocb *iocb);
static inline bool iocb_is_dsync(const struct kiocb *iocb)
static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count)
static inline void kiocb_start_write(struct kiocb *iocb)
static inline void kiocb_end_write(struct kiocb *iocb)
extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);
int generic_write_checks_count(struct kiocb *iocb, loff_t *count);
ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *to,
extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
ssize_t generic_perform_write(struct kiocb *, struct iov_iter *);
ssize_t direct_write_fallback(struct kiocb *iocb, struct iov_iter *iter,
ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,
ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,
ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter);
extern int simple_write_begin(const struct kiocb *iocb,
static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags,
int generic_atomic_write_valid(struct kiocb *iocb, struct iov_iter *iter);
void (*ki_complete)(struct kiocb *iocb, long ret);
static inline bool is_sync_kiocb(struct kiocb *kiocb)
return kiocb->ki_complete == NULL;
int (*write_begin)(const struct kiocb *, struct address_space *mapping,
int (*write_end)(const struct kiocb *, struct address_space *mapping,
ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter);
struct kiocb;
typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
struct kiocb;
ssize_t iomap_file_buffered_write(struct kiocb *iocb, struct iov_iter *from,
int (*end_io)(struct kiocb *iocb, ssize_t size, int error,
ssize_t iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
struct iomap_dio *__iomap_dio_rw(struct kiocb *iocb, struct iov_iter *iter,
struct kiocb *iocb; /* AIO completion vector */
ssize_t netfs_unbuffered_read_iter_locked(struct kiocb *iocb, struct iov_iter *iter);
ssize_t netfs_unbuffered_read_iter(struct kiocb *iocb, struct iov_iter *iter);
ssize_t netfs_buffered_read_iter(struct kiocb *iocb, struct iov_iter *iter);
ssize_t netfs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter);
ssize_t netfs_perform_write(struct kiocb *iocb, struct iov_iter *iter,
ssize_t netfs_buffered_write_iter_locked(struct kiocb *iocb, struct iov_iter *from,
ssize_t netfs_unbuffered_write_iter(struct kiocb *iocb, struct iov_iter *from);
ssize_t netfs_unbuffered_write_iter_locked(struct kiocb *iocb, struct iov_iter *iter,
ssize_t netfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from);
int nfs_swap_rw(struct kiocb *iocb, struct iov_iter *iter);
ssize_t nfs_file_direct_read(struct kiocb *iocb,
ssize_t nfs_file_direct_write(struct kiocb *iocb,
int kiocb_invalidate_pages(struct kiocb *iocb, size_t count);
void kiocb_invalidate_post_direct_write(struct kiocb *iocb, size_t count);
int kiocb_write_and_wait(struct kiocb *iocb, size_t count);
static inline struct folio *write_begin_get_folio(const struct kiocb *iocb,
ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *);
ssize_t seq_read_iter(struct kiocb *iocb, struct iov_iter *iter);
struct kiocb *msg_iocb; /* ptr to iocb for async requests */
TP_PROTO(struct inode *inode, struct kiocb *iocb, long len, int rw),
TP_PROTO(const struct kiocb *iocb, const struct iov_iter *from),
struct kiocb *iocb = mio->iocb;
static ssize_t io_mock_delay_rw(struct kiocb *iocb, size_t len)
static ssize_t io_mock_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t io_mock_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct kiocb *iocb;
static __maybe_unused int io_eopnotsupp_prep(struct io_kiocb *kiocb,
kiocb->ki_flags &= ~IOCB_WAITQ;
kiocb->ki_flags &= ~IOCB_WAITQ;
rw->kiocb.ki_complete = NULL;
static bool io_kiocb_start_write(struct io_kiocb *req, struct kiocb *kiocb)
if (!(kiocb->ki_flags & IOCB_NOWAIT)) {
kiocb_start_write(kiocb);
inode = file_inode(kiocb->ki_filp);
struct kiocb *kiocb = &rw->kiocb;
if (!(kiocb->ki_flags & IOCB_DIRECT) &&
kiocb->ki_flags |= IOCB_NOWAIT;
kiocb->ki_flags &= ~IOCB_NOWAIT;
if (unlikely(!io_kiocb_start_write(req, kiocb)))
kiocb->ki_flags |= IOCB_WRITE;
ret2 = req->file->f_op->write_iter(kiocb, &io->iter);
if (ret2 == -EOPNOTSUPP && (kiocb->ki_flags & IOCB_NOWAIT))
trace_io_uring_short_write(req->ctx, kiocb->ki_pos - ret2,
if (kiocb->ki_flags & IOCB_WRITE)
io_meta_restore(io, kiocb);
if (kiocb->ki_flags & IOCB_WRITE)
return file->f_op->iopoll(&rw->kiocb, iob, poll_flags);
static inline void io_meta_restore(struct io_async_rw *io, struct kiocb *kiocb)
if (kiocb->ki_flags & IOCB_HAS_METADATA) {
static void io_complete_rw(struct kiocb *kiocb, long res);
rw->kiocb.ki_pos = READ_ONCE(sqe->off);
static void io_complete_rw_iopoll(struct kiocb *kiocb, long res);
rw->kiocb.ki_ioprio = ioprio;
rw->kiocb.ki_ioprio = get_current_ioprio();
rw->kiocb.ki_flags = 0;
rw->kiocb.ki_write_stream = READ_ONCE(sqe->write_stream);
rw->kiocb.ki_complete = io_complete_rw_iopoll;
rw->kiocb.ki_complete = io_complete_rw;
struct kiocb kiocb;
if (rw->kiocb.ki_pos != -1)
return &rw->kiocb.ki_pos;
rw->kiocb.ki_pos = req->file->f_pos;
return &rw->kiocb.ki_pos;
rw->kiocb.ki_pos = 0;
io_meta_restore(io, &rw->kiocb);
kiocb_end_write(&rw->kiocb);
if (rw->kiocb.ki_flags & IOCB_WRITE) {
static void io_complete_rw(struct kiocb *kiocb, long res)
struct io_rw *rw = container_of(kiocb, struct io_rw, kiocb);
static void io_complete_rw_iopoll(struct kiocb *kiocb, long res)
struct io_rw *rw = container_of(kiocb, struct io_rw, kiocb);
if (kiocb->ki_flags & IOCB_WRITE)
io_complete_rw_iopoll(&rw->kiocb, ret);
io_complete_rw(&rw->kiocb, ret);
req->file->f_pos = rw->kiocb.ki_pos;
static inline loff_t *io_kiocb_ppos(struct kiocb *kiocb)
return (kiocb->ki_filp->f_mode & FMODE_STREAM) ? NULL : &kiocb->ki_pos;
struct kiocb *kiocb = &rw->kiocb;
struct file *file = kiocb->ki_filp;
if (kiocb->ki_flags & IOCB_HIPRI)
if ((kiocb->ki_flags & IOCB_NOWAIT) &&
!(kiocb->ki_filp->f_flags & O_NONBLOCK))
ppos = io_kiocb_ppos(kiocb);
rw->kiocb.ki_flags &= ~IOCB_WAITQ;
struct kiocb *kiocb = &rw->kiocb;
if (kiocb->ki_flags & (IOCB_DIRECT | IOCB_HIPRI))
kiocb->ki_flags |= IOCB_WAITQ;
kiocb->ki_flags &= ~IOCB_NOWAIT;
kiocb->ki_waitq = wait;
struct file *file = rw->kiocb.ki_filp;
return file->f_op->read_iter(&rw->kiocb, iter);
struct kiocb *kiocb = &rw->kiocb;
kiocb->ki_flags = file->f_iocb_flags;
ret = kiocb_set_rw_flags(kiocb, rw->flags, rw_type);
if (kiocb->ki_flags & IOCB_NOWAIT ||
if (!(kiocb->ki_flags & IOCB_DIRECT) || !file->f_op->iopoll)
kiocb->private = NULL;
kiocb->ki_flags |= IOCB_HIPRI;
if (kiocb->ki_flags & IOCB_HIPRI)
kiocb->ki_flags |= IOCB_HAS_METADATA;
kiocb->private = &io->meta;
struct kiocb *kiocb = &rw->kiocb;
kiocb->ki_flags |= IOCB_NOWAIT;
kiocb->ki_flags &= ~IOCB_NOWAIT;
io_meta_restore(io, kiocb);
static ssize_t devkmsg_write(struct kiocb *iocb, struct iov_iter *from)
static ssize_t user_events_write_iter(struct kiocb *kp, struct iov_iter *i)
static int filemap_update_page(struct kiocb *iocb,
static int filemap_create_folio(struct kiocb *iocb, struct folio_batch *fbatch)
static int filemap_readahead(struct kiocb *iocb, struct file *file,
static int filemap_get_pages(struct kiocb *iocb, size_t count,
ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *iter,
int kiocb_write_and_wait(struct kiocb *iocb, size_t count)
int kiocb_invalidate_pages(struct kiocb *iocb, size_t count)
generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
struct kiocb iocb;
void kiocb_invalidate_post_direct_write(struct kiocb *iocb, size_t count)
generic_file_direct_write(struct kiocb *iocb, struct iov_iter *from)
ssize_t generic_perform_write(struct kiocb *iocb, struct iov_iter *i)
ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
ssize_t generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
struct kiocb iocb;
static void sio_write_complete(struct kiocb *iocb, long ret)
static void sio_read_complete(struct kiocb *iocb, long ret)
shmem_write_begin(const struct kiocb *iocb, struct address_space *mapping,
shmem_write_end(const struct kiocb *iocb, struct address_space *mapping,
static ssize_t shmem_file_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t shmem_file_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t qrtr_tun_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t qrtr_tun_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to)
static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from)
static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to);
static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from);
static ssize_t snd_pcm_readv(struct kiocb *iocb, struct iov_iter *to)
static ssize_t snd_pcm_writev(struct kiocb *iocb, struct iov_iter *from)
struct kiocb *msg_iocb; /* ptr to iocb for async requests */