Sending 12000 byte buffers produces an obscure error.
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Accelio |
Fix Committed
|
High
|
Eyal Salomon |
Bug Description
When I send 12000 buffers and RDMA read is triggered within the Accelio, but I get a CONNECTION_ERROR event instead of something meaningful.
The following block of code in xio_rdma_
since EINVAL doesn't describe it when no RDMA read is possible in my opinion:
if (user_assign_flag) {
/* if user does not have buffers ignore */
if (task->
WARN_
WARN_LOG("rdma read is ignored\n");
task-
return -1;
}
for (i = 0; i < task->imsg.
if (task->
ERROR_
ERROR_LOG("rdma read is ignored\n");
task-
return -1;
}
llen += task->imsg.
}
if (rlen > llen) {
ERROR_
ERROR_
"local peer provided buffer size %zd bytes\n",
rlen, llen);
ERROR_LOG("rdma read is ignored\n");
task-
return -1;
}
Otherwise, please, kindly, let us know.
Also, from a surface look it looks as a kind of inconsistancy, when you can send messages even without registering a Memory Region up to a certain number of bytes, and then you add a byte and get a CONNECTION_ERROR.
Perhaps, if there is an edge there, the error reporting should be very presize, like ERR_MAX_
(Ideally it should be able to send all the message sizes (even sliced), or nothing at all)
Please, kindly, let me know if you had some other pattern in mind.
Thanks!
Dmitry
description: | updated |
Changed in accelio: | |
importance: | Undecided → High |
status: | New → Fix Committed |
assignee: | nobody → Eyal Salomon (esalomon) |
The current actions that took place after this error was raised were invalid.
Application should not get connection error, but need to continue and get notification with the invalid message.
The message will contain error in the message's status field.
since there are various reasons to have error in that operation, elaborate error is printed in the log.