* Unlike the included modules, external engines should have a
* non-static ioengine structure that we can reference.
*/
- ops = dlsym(dlhandle, "ioengine");
+ ops = dlsym(dlhandle, engine_lib);
+ if (!ops)
+ ops = dlsym(dlhandle, "ioengine");
if (!ops) {
td_vmsg(td, -1, dlerror(), "dlsym");
dlclose(dlhandle);
{
int r = 0;
+ /*
+ * For ioengine=rdma one side operation RDMA_WRITE or RDMA_READ,
+ * server side gets a message from the client
+ * side that the task is finished, and
+ * td->done is set to 1 after td_io_commit(). In this case,
+ * there is no need to reap complete event in server side.
+ */
+ if (td->done)
+ return 0;
+
if (min > 0 && td->io_ops->commit) {
r = td->io_ops->commit(td);
if (r < 0)
*/
if (io_u->error == EINVAL && td->io_issues[io_u->ddir & 1] == 1 &&
td->o.odirect) {
+
log_info("fio: first direct IO errored. File system may not "
"support direct IO, or iomem_align= is bad.\n");
}
- if (!td->io_ops->commit) {
+ if (!td->io_ops->commit || ddir_trim(io_u->ddir)) {
io_u_mark_submit(td, 1);
io_u_mark_complete(td, 1);
}
if (ddir_rw(io_u->ddir)) {
io_u_mark_depth(td, 1);
td->ts.total_io_u[io_u->ddir]++;
- } else if (io_u->ddir == DDIR_TRIM)
- td->ts.total_io_u[2]++;
+ }
} else if (ret == FIO_Q_QUEUED) {
int r;