> On Apr 14, 2015, at 2:19 PM, Alin Serdean <aserd...@cloudbasesolutions.com> > 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 dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev