Lines Matching refs:io_u
13 struct io_u *io_u; member
23 struct io_u **aio_events;
24 struct io_u **sort_events;
90 rbd->aio_events = calloc(td->o.iodepth, sizeof(struct io_u *)); in _fio_setup_rbd_data()
94 rbd->sort_events = calloc(td->o.iodepth, sizeof(struct io_u *)); in _fio_setup_rbd_data()
180 struct io_u *io_u = fri->io_u; in _fio_rbd_finish_aiocb() local
192 io_u->error = ret; in _fio_rbd_finish_aiocb()
193 io_u->resid = io_u->xfer_buflen; in _fio_rbd_finish_aiocb()
195 io_u->error = 0; in _fio_rbd_finish_aiocb()
198 static struct io_u *fio_rbd_event(struct thread_data *td, int event) in fio_rbd_event()
205 static inline int fri_check_complete(struct rbd_data *rbd, struct io_u *io_u, in fri_check_complete() argument
208 struct fio_rbd_iou *fri = io_u->engine_data; in fri_check_complete()
212 rbd->aio_events[*events] = io_u; in fri_check_complete()
222 static inline int rbd_io_u_seen(struct io_u *io_u) in rbd_io_u_seen() argument
224 struct fio_rbd_iou *fri = io_u->engine_data; in rbd_io_u_seen()
229 static void rbd_io_u_wait_complete(struct io_u *io_u) in rbd_io_u_wait_complete() argument
231 struct fio_rbd_iou *fri = io_u->engine_data; in rbd_io_u_wait_complete()
238 const struct io_u **a = (const struct io_u **) p1; in rbd_io_u_cmp()
239 const struct io_u **b = (const struct io_u **) p2; in rbd_io_u_cmp()
258 struct io_u *io_u; in rbd_iter_events() local
262 io_u_qiter(&td->io_u_all, io_u, i) { in rbd_iter_events()
263 if (!(io_u->flags & IO_U_F_FLIGHT)) in rbd_iter_events()
265 if (rbd_io_u_seen(io_u)) in rbd_iter_events()
268 if (fri_check_complete(rbd, io_u, events)) in rbd_iter_events()
271 rbd->sort_events[sidx++] = io_u; in rbd_iter_events()
283 qsort(rbd->sort_events, sidx, sizeof(struct io_u *), rbd_io_u_cmp); in rbd_iter_events()
286 io_u = rbd->sort_events[i]; in rbd_iter_events()
288 if (fri_check_complete(rbd, io_u, events)) { in rbd_iter_events()
300 rbd_io_u_wait_complete(io_u); in rbd_iter_events()
302 if (fri_check_complete(rbd, io_u, events)) in rbd_iter_events()
333 static int fio_rbd_queue(struct thread_data *td, struct io_u *io_u) in fio_rbd_queue() argument
336 struct fio_rbd_iou *fri = io_u->engine_data; in fio_rbd_queue()
339 fio_ro_check(td, io_u); in fio_rbd_queue()
351 if (io_u->ddir == DDIR_WRITE) { in fio_rbd_queue()
352 r = rbd_aio_write(rbd->image, io_u->offset, io_u->xfer_buflen, in fio_rbd_queue()
353 io_u->xfer_buf, fri->completion); in fio_rbd_queue()
359 } else if (io_u->ddir == DDIR_READ) { in fio_rbd_queue()
360 r = rbd_aio_read(rbd->image, io_u->offset, io_u->xfer_buflen, in fio_rbd_queue()
361 io_u->xfer_buf, fri->completion); in fio_rbd_queue()
367 } else if (io_u->ddir == DDIR_TRIM) { in fio_rbd_queue()
368 r = rbd_aio_discard(rbd->image, io_u->offset, in fio_rbd_queue()
369 io_u->xfer_buflen, fri->completion); in fio_rbd_queue()
374 } else if (io_u->ddir == DDIR_SYNC) { in fio_rbd_queue()
382 io_u->ddir); in fio_rbd_queue()
390 io_u->error = r; in fio_rbd_queue()
391 td_verror(td, io_u->error, "xfer"); in fio_rbd_queue()
508 static void fio_rbd_io_u_free(struct thread_data *td, struct io_u *io_u) in fio_rbd_io_u_free() argument
510 struct fio_rbd_iou *fri = io_u->engine_data; in fio_rbd_io_u_free()
513 io_u->engine_data = NULL; in fio_rbd_io_u_free()
518 static int fio_rbd_io_u_init(struct thread_data *td, struct io_u *io_u) in fio_rbd_io_u_init() argument
523 fri->io_u = io_u; in fio_rbd_io_u_init()
524 io_u->engine_data = fri; in fio_rbd_io_u_init()