Lines Matching refs:io_u

203 int td_io_prep(struct thread_data *td, struct io_u *io_u)  in td_io_prep()  argument
205 dprint_io_u(io_u, "prep"); in td_io_prep()
206 fio_ro_check(td, io_u); in td_io_prep()
208 lock_file(td, io_u->file, io_u->ddir); in td_io_prep()
211 int ret = td->io_ops->prep(td, io_u); in td_io_prep()
213 dprint(FD_IO, "->prep(%p)=%d\n", io_u, ret); in td_io_prep()
215 unlock_file(td, io_u->file); in td_io_prep()
265 int td_io_queue(struct thread_data *td, struct io_u *io_u) in td_io_queue() argument
269 dprint_io_u(io_u, "queue"); in td_io_queue()
270 fio_ro_check(td, io_u); in td_io_queue()
272 assert((io_u->flags & IO_U_F_FLIGHT) == 0); in td_io_queue()
273 io_u->flags |= IO_U_F_FLIGHT; in td_io_queue()
275 assert(fio_file_open(io_u->file)); in td_io_queue()
280 log_io_u(td, io_u); in td_io_queue()
282 io_u->error = 0; in td_io_queue()
283 io_u->resid = 0; in td_io_queue()
287 fio_gettime(&io_u->issue_time, NULL); in td_io_queue()
293 memcpy(&td->last_issue, &io_u->issue_time, in td_io_queue()
297 if (ddir_rw(acct_ddir(io_u))) { in td_io_queue()
298 td->io_issues[acct_ddir(io_u)]++; in td_io_queue()
299 td->io_issue_bytes[acct_ddir(io_u)] += io_u->xfer_buflen; in td_io_queue()
302 ret = td->io_ops->queue(td, io_u); in td_io_queue()
304 unlock_file(td, io_u->file); in td_io_queue()
306 if (ret == FIO_Q_BUSY && ddir_rw(acct_ddir(io_u))) { in td_io_queue()
307 td->io_issues[acct_ddir(io_u)]--; in td_io_queue()
308 td->io_issue_bytes[acct_ddir(io_u)] -= io_u->xfer_buflen; in td_io_queue()
315 if (io_u->error && !td->error) in td_io_queue()
316 td_verror(td, io_u->error, "td_io_queue"); in td_io_queue()
324 if (io_u->error == EINVAL && td->io_issues[io_u->ddir & 1] == 1 && in td_io_queue()
331 if (!td->io_ops->commit || io_u->ddir == DDIR_TRIM) { in td_io_queue()
337 if (ddir_rw(io_u->ddir)) { in td_io_queue()
339 td->ts.total_io_u[io_u->ddir]++; in td_io_queue()
344 if (ddir_rw(io_u->ddir)) { in td_io_queue()
346 td->ts.total_io_u[io_u->ddir]++; in td_io_queue()
358 fio_gettime(&io_u->issue_time, NULL); in td_io_queue()
364 memcpy(&td->last_issue, &io_u->issue_time, in td_io_queue()
546 int do_io_u_sync(const struct thread_data *td, struct io_u *io_u) in do_io_u_sync() argument
550 if (io_u->ddir == DDIR_SYNC) { in do_io_u_sync()
551 ret = fsync(io_u->file->fd); in do_io_u_sync()
552 } else if (io_u->ddir == DDIR_DATASYNC) { in do_io_u_sync()
554 ret = fdatasync(io_u->file->fd); in do_io_u_sync()
556 ret = io_u->xfer_buflen; in do_io_u_sync()
557 io_u->error = EINVAL; in do_io_u_sync()
559 } else if (io_u->ddir == DDIR_SYNC_FILE_RANGE) in do_io_u_sync()
560 ret = do_sync_file_range(td, io_u->file); in do_io_u_sync()
562 ret = io_u->xfer_buflen; in do_io_u_sync()
563 io_u->error = EINVAL; in do_io_u_sync()
567 io_u->error = errno; in do_io_u_sync()
572 int do_io_u_trim(const struct thread_data *td, struct io_u *io_u) in do_io_u_trim() argument
575 io_u->error = EINVAL; in do_io_u_trim()
578 struct fio_file *f = io_u->file; in do_io_u_trim()
581 ret = os_trim(f->fd, io_u->offset, io_u->xfer_buflen); in do_io_u_trim()
583 return io_u->xfer_buflen; in do_io_u_trim()
585 io_u->error = ret; in do_io_u_trim()