[ovs-dev] [PATCH] datapath: add netlink error message to help kernel userspace integration.
Andy Zhou
azhou at nicira.com
Tue Jul 2 01:44:49 UTC 2013
Thanks for the review. I will send out a V2 soon.
On Mon, Jul 1, 2013 at 5:06 PM, Jesse Gross <jesse at nicira.com> wrote:
> On Mon, Jul 1, 2013 at 3:43 PM, Andy Zhou <azhou at nicira.com> wrote:
> > diff --git a/datapath/datapath.c b/datapath/datapath.c
> > index 3680391..2797e2e 100644
> > --- a/datapath/datapath.c
> > +++ b/datapath/datapath.c
> > @@ -1353,12 +1353,15 @@ static int ovs_flow_cmd_new_or_set(struct
> sk_buff *skb, struct genl_info *info)
> > */
> > error = -EEXIST;
> > if (info->genlhdr->cmd == OVS_FLOW_CMD_NEW &&
> > - info->nlhdr->nlmsg_flags & (NLM_F_CREATE |
> NLM_F_EXCL))
> > + info->nlhdr->nlmsg_flags & (NLM_F_CREATE |
> NLM_F_EXCL)) {
> > + OVS_NLERR("Flow creation message rejected,
> duplicate flow found.\n");
> > goto err_unlock_ovs;
> > + }
>
> This one can happen during the normal course of operation, so I don't
> think that we should log anything here. I think it should really just
> be the situations where we return -EINVAL.
>
> > @@ -1432,6 +1437,7 @@ static int ovs_flow_cmd_get(struct sk_buff *skb,
> struct genl_info *info)
> > reply = ovs_flow_cmd_build_info(flow, dp, info->snd_portid,
> > info->snd_seq, OVS_FLOW_CMD_NEW);
> > if (IS_ERR(reply)) {
> > + OVS_NLERR("Flow get message rejected, failed to
> construct the reply message.\n");
> > err = PTR_ERR(reply);
> > goto unlock;
> > }
> > @@ -1475,6 +1481,7 @@ static int ovs_flow_cmd_del(struct sk_buff *skb,
> struct genl_info *info)
> > table = ovsl_dereference(dp->table);
> > flow = ovs_flow_lookup_unmasked_key(table, &match);
> > if (!flow) {
> > + OVS_NLERR("Flow del message rejected, flow not
> found.\n");
> > err = -ENOENT;
> > goto unlock;
> > }
>
> I think it's probably not a good idea to log in these situations either.
>
> > diff --git a/datapath/datapath.h b/datapath/datapath.h
> > index 559df69..0eb0aca 100644
> > --- a/datapath/datapath.h
> > +++ b/datapath/datapath.h
> > @@ -204,4 +204,8 @@ struct sk_buff *ovs_vport_cmd_build_info(struct
> vport *, u32 portid, u32 seq,
> >
> > int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb);
> > void ovs_dp_notify_wq(struct work_struct *work);
> > +
> > +#define OVS_NLERR(fmt, ...) \
> > + pr_info_once(fmt " NLERR: ", ##__VA_ARGS__)
>
> I'm not sure that this really needs to be in all caps and it could be
> more descriptive. Something simple like "netlink: " would probably be
> more appropriate.
>
> > #endif /* datapath.h */
> > diff --git a/datapath/flow.c b/datapath/flow.c
> > index 2ac36b6..32fe86b 100644
> > --- a/datapath/flow.c
> > +++ b/datapath/flow.c
>
> Many of the strings in this file basically just say that there is an
> error. This does give you a pointer to the appropriate condition but
> in many cases the check is more specific than just "error", so it
> would be good to make the messages a little more self explanatory.
>
> > @@ -1289,8 +1311,10 @@ static int metadata_from_nlattrs(struct
> sw_flow_match *match, u64 *attrs,
> > if (*attrs & (1ULL << OVS_KEY_ATTR_SKB_MARK)) {
> > uint32_t mark = nla_get_u32(a[OVS_KEY_ATTR_SKB_MARK]);
> > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,20) &&
> !defined(CONFIG_NETFILTER)
> > - if (!is_mask && mark != 0)
> > + if (!is_mask && mark != 0) {
> > + OVS_NLERR("Flow metadata mark is zero.\n");
>
> This error message is backwards.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-dev/attachments/20130701/570f8ffe/attachment-0003.html>
More information about the dev
mailing list