On Jan 8, 2013, at 21:07 , ext Jesse Gross wrote:
> On Tue, Jan 8, 2013 at 3:41 AM, Jarno Rajahalme <[email protected]>
> wrote:
>> Userspace code will need to keep on checking for both ENODEV and ENOENT as
>> long as older kernel modules are around.
>>
>> Signed-off-by: Jarno Rajahalme <[email protected]>
>
> OVS userspace actually uses this distinction to determine whether it
> is the datapath or the port that doesn't exist. For example, see
> netdev_vport_set_config(). In general, it's also usually helpful to
> have more information about the cause of the error as long as it
> doesn't expose implementation details.
Actually, it seems to me that netdev_vport_set_config() does the
OVS_VPORT_CMD_SET based on the vport name only. In the "name" branch of the
lookup_vport() ENODEV is returned if a matching vport cannot be found, i.e.
ENOENT would not be returned to netdev_vport_set_config(). Also, it is the
ENODEV value netdev_vport_set_config() looks for, not ENOENT. If
netdev_vport_set_config() were to use ODP port number to refer to the vport, it
would also need to check for ENOENT in addition to ENODEV.
It is the mismatch between the name and port_no branches of lookup_vport() that
triggered me to propose the change. Currently:
If name is given,
and no such port is found, return ENODEV
if dp_ifindex is given but it does not match, return ENODEV
else if port_no is given
and dp (via dp_ifindex) cannot be found, return ENODEV
if the dp has no port_no, return ENOENT
To me this does not look right. A different value for similar error case
("valid datapath, no such port") is returned depending on whether the query is
done with a name or a port_no.
>
> Also, would you mind keeping the subject of your patches to around 70
> characters in the future so they don't wrap?
Sorry about that.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev