On Jan 8, 2013, at 21:07 , ext Jesse Gross wrote:

> On Tue, Jan 8, 2013 at 3:41 AM, Jarno Rajahalme <jarno.rajaha...@nsn.com> 
> 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 <jarno.rajaha...@nsn.com>
> 
> 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
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to