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