Lines Matching full:io
45 static bool erofs_fscache_io_put(struct erofs_fscache_io *io) in erofs_fscache_io_put() argument
47 if (!refcount_dec_and_test(&io->ref)) in erofs_fscache_io_put()
49 if (io->cres.ops) in erofs_fscache_io_put()
50 io->cres.ops->end_operation(&io->cres); in erofs_fscache_io_put()
51 kfree(io); in erofs_fscache_io_put()
97 static void erofs_fscache_req_io_put(struct erofs_fscache_io *io) in erofs_fscache_req_io_put() argument
99 struct erofs_fscache_rq *req = io->private; in erofs_fscache_req_io_put()
101 if (erofs_fscache_io_put(io)) in erofs_fscache_req_io_put()
108 struct erofs_fscache_io *io = priv; in erofs_fscache_req_end_io() local
109 struct erofs_fscache_rq *req = io->private; in erofs_fscache_req_end_io()
113 erofs_fscache_req_io_put(io); in erofs_fscache_req_end_io()
118 struct erofs_fscache_io *io = kzalloc(sizeof(*io), GFP_KERNEL); in erofs_fscache_req_io_alloc() local
120 if (!io) in erofs_fscache_req_io_alloc()
122 io->end_io = erofs_fscache_req_end_io; in erofs_fscache_req_io_alloc()
123 io->private = req; in erofs_fscache_req_io_alloc()
125 refcount_set(&io->ref, 1); in erofs_fscache_req_io_alloc()
126 return io; in erofs_fscache_req_io_alloc()
131 * offset, and fill the read data into buffer described by io->iter.
134 loff_t pstart, struct erofs_fscache_io *io) in erofs_fscache_read_io_async() argument
137 struct netfs_cache_resources *cres = &io->cres; in erofs_fscache_read_io_async()
138 struct iov_iter *iter = &io->iter; in erofs_fscache_read_io_async()
159 refcount_inc(&io->ref); in erofs_fscache_read_io_async()
161 io->end_io, io); in erofs_fscache_read_io_async()
178 struct erofs_fscache_io io; member
186 struct erofs_fscache_bio *io = priv; in erofs_fscache_bio_endio() local
189 io->bio.bi_status = errno_to_blk_status(transferred_or_error); in erofs_fscache_bio_endio()
190 io->bio.bi_end_io(&io->bio); in erofs_fscache_bio_endio()
191 BUILD_BUG_ON(offsetof(struct erofs_fscache_bio, io) != 0); in erofs_fscache_bio_endio()
192 erofs_fscache_io_put(&io->io); in erofs_fscache_bio_endio()
197 struct erofs_fscache_bio *io; in erofs_fscache_bio_alloc() local
199 io = kmalloc(sizeof(*io), GFP_KERNEL | __GFP_NOFAIL); in erofs_fscache_bio_alloc()
200 bio_init(&io->bio, NULL, io->bvecs, BIO_MAX_VECS, REQ_OP_READ); in erofs_fscache_bio_alloc()
201 io->io.private = mdev->m_fscache->cookie; in erofs_fscache_bio_alloc()
202 io->io.end_io = erofs_fscache_bio_endio; in erofs_fscache_bio_alloc()
203 refcount_set(&io->io.ref, 1); in erofs_fscache_bio_alloc()
204 return &io->bio; in erofs_fscache_bio_alloc()
209 struct erofs_fscache_bio *io = container_of(bio, in erofs_fscache_submit_bio() local
213 iov_iter_bvec(&io->io.iter, ITER_DEST, io->bvecs, bio->bi_vcnt, in erofs_fscache_submit_bio()
215 ret = erofs_fscache_read_io_async(io->io.private, in erofs_fscache_submit_bio()
216 bio->bi_iter.bi_sector << 9, &io->io); in erofs_fscache_submit_bio()
217 erofs_fscache_io_put(&io->io); in erofs_fscache_submit_bio()
229 struct erofs_fscache_io *io; in erofs_fscache_meta_read_folio() local
238 io = erofs_fscache_req_io_alloc(req); in erofs_fscache_meta_read_folio()
239 if (!io) { in erofs_fscache_meta_read_folio()
243 iov_iter_xarray(&io->iter, ITER_DEST, &folio->mapping->i_pages, in erofs_fscache_meta_read_folio()
246 ret = erofs_fscache_read_io_async(ctx->cookie, folio_pos(folio), io); in erofs_fscache_meta_read_folio()
250 erofs_fscache_req_io_put(io); in erofs_fscache_meta_read_folio()
261 struct erofs_fscache_io *io; in erofs_fscache_data_read_slice() local
315 io = erofs_fscache_req_io_alloc(req); in erofs_fscache_data_read_slice()
316 if (!io) in erofs_fscache_data_read_slice()
318 iov_iter_xarray(&io->iter, ITER_DEST, &mapping->i_pages, pos, count); in erofs_fscache_data_read_slice()
320 mdev.m_pa + (pos - map.m_la), io); in erofs_fscache_data_read_slice()
321 erofs_fscache_req_io_put(io); in erofs_fscache_data_read_slice()