Lines Matching full:io

45 static bool erofs_fscache_io_put(struct erofs_fscache_io *io)
47 if (!refcount_dec_and_test(&io->ref))
49 if (io->cres.ops)
50 io->cres.ops->end_operation(&io->cres);
51 kfree(io);
97 static void erofs_fscache_req_io_put(struct erofs_fscache_io *io)
99 struct erofs_fscache_rq *req = io->private;
101 if (erofs_fscache_io_put(io))
107 struct erofs_fscache_io *io = priv;
108 struct erofs_fscache_rq *req = io->private;
112 erofs_fscache_req_io_put(io);
117 struct erofs_fscache_io *io = kzalloc(sizeof(*io), GFP_KERNEL);
119 if (!io)
121 io->end_io = erofs_fscache_req_end_io;
122 io->private = req;
124 refcount_set(&io->ref, 1);
125 return io;
130 * offset, and fill the read data into buffer described by io->iter.
133 loff_t pstart, struct erofs_fscache_io *io)
136 struct netfs_cache_resources *cres = &io->cres;
137 struct iov_iter *iter = &io->iter;
158 refcount_inc(&io->ref);
160 io->end_io, io);
177 struct erofs_fscache_io io;
184 struct erofs_fscache_bio *io = priv;
187 io->bio.bi_status = errno_to_blk_status(transferred_or_error);
188 io->bio.bi_end_io(&io->bio);
189 BUILD_BUG_ON(offsetof(struct erofs_fscache_bio, io) != 0);
190 erofs_fscache_io_put(&io->io);
195 struct erofs_fscache_bio *io;
197 io = kmalloc(sizeof(*io), GFP_KERNEL | __GFP_NOFAIL);
198 bio_init(&io->bio, NULL, io->bvecs, BIO_MAX_VECS, REQ_OP_READ);
199 io->io.private = mdev->m_dif->fscache->cookie;
200 io->io.end_io = erofs_fscache_bio_endio;
201 refcount_set(&io->io.ref, 1);
202 return &io->bio;
207 struct erofs_fscache_bio *io = container_of(bio,
211 iov_iter_bvec(&io->io.iter, ITER_DEST, io->bvecs, bio->bi_vcnt,
213 ret = erofs_fscache_read_io_async(io->io.private,
214 bio->bi_iter.bi_sector << 9, &io->io);
215 erofs_fscache_io_put(&io->io);
227 struct erofs_fscache_io *io;
236 io = erofs_fscache_req_io_alloc(req);
237 if (!io) {
241 iov_iter_xarray(&io->iter, ITER_DEST, &folio->mapping->i_pages,
244 ret = erofs_fscache_read_io_async(ctx->cookie, folio_pos(folio), io);
248 erofs_fscache_req_io_put(io);
259 struct erofs_fscache_io *io;
313 io = erofs_fscache_req_io_alloc(req);
314 if (!io)
316 iov_iter_xarray(&io->iter, ITER_DEST, &mapping->i_pages, pos, count);
318 mdev.m_pa + (pos - map.m_la), io);
319 erofs_fscache_req_io_put(io);