perf: add io check for aio device

If no aio device exist, then we can use 'exit(1)' to exit. Also,
update the same error check with 'exit(1)' for io_uring path.

Fix issue with 2893

Signed-off-by: Yifan Bian <yifan.bian@intel.com>
Change-Id: Iade74fba4588b109ce77af76ac998bb05b842ef3
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16652
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Xiaodong Liu <xiaodong.liu@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Yifan Bian 2023-02-02 07:10:35 +00:00 committed by Tomasz Zawadzki
parent 56f238488e
commit f21a34ac26

View File

@ -503,8 +503,9 @@ uring_check_io(struct ns_worker_ctx *ns_ctx)
assert(ns_ctx->u.uring.cqes[i] != NULL);
task = (struct perf_task *)ns_ctx->u.uring.cqes[i]->user_data;
if (ns_ctx->u.uring.cqes[i]->res != (int)task->iovs[0].iov_len) {
fprintf(stderr, "cqe[i]->status=%d\n", ns_ctx->u.uring.cqes[i]->res);
exit(0);
fprintf(stderr, "cqe->status=%d, iov_len=%d\n", ns_ctx->u.uring.cqes[i]->res,
(int)task->iovs[0].iov_len);
exit(1);
}
io_uring_cqe_seen(&ns_ctx->u.uring.ring, ns_ctx->u.uring.cqes[i]);
task_complete(task);
@ -615,6 +616,7 @@ aio_check_io(struct ns_worker_ctx *ns_ctx)
{
int count, i;
struct timespec timeout;
struct perf_task *task;
timeout.tv_sec = 0;
timeout.tv_nsec = 0;
@ -626,6 +628,12 @@ aio_check_io(struct ns_worker_ctx *ns_ctx)
}
for (i = 0; i < count; i++) {
task = (struct perf_task *)ns_ctx->u.aio.events[i].data;
if (ns_ctx->u.aio.events[i].res != (uint64_t)task->iovs[0].iov_len) {
fprintf(stderr, "event->res=%lu, iov_len=%lu\n", ns_ctx->u.aio.events[i].res,
(uint64_t)task->iovs[0].iov_len);
exit(1);
}
task_complete(ns_ctx->u.aio.events[i].data);
}
return count;