-static int td_io_getevents(struct thread_data *td, int min, int max,
- struct timespec *t)
-{
- return td->io_ops->getevents(td, min, max, t);
-}
-
-static int td_io_queue(struct thread_data *td, struct io_u *io_u)
-{
- gettimeofday(&io_u->issue_time, NULL);
-
- return td->io_ops->queue(td, io_u);
-}
-
-#define iocb_time(iocb) ((unsigned long) (iocb)->data)
-
-static void io_completed(struct thread_data *td, struct io_u *io_u,
- struct io_completion_data *icd)
-{
- struct timeval e;
- unsigned long msec;
-
- gettimeofday(&e, NULL);
-
- if (!io_u->error) {
- unsigned int bytes = io_u->buflen - io_u->resid;
- const int idx = io_u->ddir;
-
- td->io_blocks[idx]++;
- td->io_bytes[idx] += bytes;
- td->zone_bytes += bytes;
- td->this_io_bytes[idx] += bytes;
-
- msec = mtime_since(&io_u->issue_time, &e);
-
- add_clat_sample(td, idx, msec);
- add_bw_sample(td, idx);
-
- if ((td_rw(td) || td_write(td)) && idx == DDIR_WRITE)
- log_io_piece(td, io_u);
-
- icd->bytes_done[idx] += bytes;
- } else
- icd->error = io_u->error;
-}
-
-static void ios_completed(struct thread_data *td,struct io_completion_data *icd)
-{
- struct io_u *io_u;
- int i;
-
- icd->error = 0;
- icd->bytes_done[0] = icd->bytes_done[1] = 0;
-
- for (i = 0; i < icd->nr; i++) {
- io_u = td->io_ops->event(td, i);
-
- io_completed(td, io_u, icd);
- put_io_u(td, io_u);
- }
-}
-