> On Apr 14, 2015, at 2:19 PM, Alin Serdean <[email protected]>
> wrote:
>
> In nl_sock_transact_multiple__ we do the following:
>
> if (!DeviceIoControl(sock->handle, OVS_IOCTL_TRANSACT,
> txn->request->data,
> txn->request->size,
> reply_buf, sizeof reply_buf,
> &reply_len, NULL)) {
> /* XXX: Map to a more appropriate error. */
> error = EINVAL;
> break;
> }
>
> We map every failure to EINVAL that is why it did not pop out into Linux.
Alin,
Setting ‘error’ to EINVAL was purely temporary since I didn’t know what is the
correct semantic that time. At some point, I wanted to resist this.
One more thing we need to do is to define meaningful error codes for:
struct nlmsgerr
{
int error;
struct nlmsghdr msg;
};
Currently, we set ‘nlmsgerr.error’ to a value in 'enum _NL_ERROR_’ in the
kernel. All of the enums don’t map 1-1 with errno_t (eg. EADDRINUSE does not
map to NL_ERROR_ADDRINUSE).
> We should definitely log the error using ovs_lasterror_to_string before
> setting it to EINVAL.
>
> Maybe we should just increase the number of transactions in some
> situations(i.e. STATUS_INVALID_PARAMETER) as an idea to allow the rest of the
> transactions to be processed.
Sure that is a good idea too, and can be considered. In the first version of
the code submitted for review, we were supported transaction based on
read/write IOCTL. It could be resurrected back if we see benefits of doing it.
thanks,
-- Nithin
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev