[ovs-dev] [PATCH v3] ovs-hyperv: make kernel return values netlink socket like

Eitan Eliahu eliahue at vmware.com
Wed Apr 29 15:15:50 UTC 2015


We will fix the transaction error message copy in the kernel in a separate change.
Thanks,
Eitan

-----Original Message-----
From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Ben Pfaff
Sent: Wednesday, April 29, 2015 7:45 AM
To: Nithin Raju
Cc: dev at openvswitch.org
Subject: Re: [ovs-dev] [PATCH v3] ovs-hyperv: make kernel return values netlink socket like

On Tue, Apr 28, 2015 at 02:35:37PM -0700, Nithin Raju wrote:
> In this patch, we make changes to usersapce as well as kernel datapath 
> on hyperv to make it more netlink socket like. Previously, the kernel 
> datapath did not distinguish between "transport errors" and other 
> errors. Netlink semantics dictate that netlink functions should only 
> return an error only in the case of a "transport error"
> which is generally something fatal. Eg. failure to communicate with 
> the OVS module, or an invalid command altogether. Other errors such as 
> an unsupported action, or an invalid flow key is not considered a 
> "transport error", and in such cases, netlink functions are to return 
> success with a 'struct nlmsgerr' populated in the output buffer.
> 
> This patch implements these semantics.
> 
> Signed-off-by: Nithin Raju <nithin at vmware.com>
> Acked-by: Sorin Vinturis <svinturis at cloudbasesolutions.com>
> Reported-at: 
> https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_openvs
> witch_ovs-2Dissues_issues_72&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-
> YihVMNtXt-uEs&r=CWsgHUxi6ExLXY798tmo3LJ4e3geGYp56lkcH-5cLCY&m=Ea0P825C
> d9r9LO_WuiBF5qIYzvUpud9ODF9pApcXxhI&s=VSYDudaje5XFAmpzjcYHIgg3wPtfoM3V
> b_Je1q23isk&e=
> ---
> v2: addressed Sorin's comments
> v3: rebase to HEAD

I applied this, thanks!

This assert in nl_sock_transact_multiple__() will fire (killing the
process) whenever the "if" condition is entered.  Is it really desirable?

            if (request_nlmsg->nlmsg_seq != reply_nlmsg->nlmsg_seq) {
                ovs_assert(request_nlmsg->nlmsg_seq == reply_nlmsg->nlmsg_seq);
                VLOG_DBG_RL(&rl, "mismatched seq request %#"PRIx32
                    ", reply %#"PRIx32, request_nlmsg->nlmsg_seq,
                    reply_nlmsg->nlmsg_seq);
                break;
            }
_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailman_listinfo_dev&d=AwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=CWsgHUxi6ExLXY798tmo3LJ4e3geGYp56lkcH-5cLCY&m=Ea0P825Cd9r9LO_WuiBF5qIYzvUpud9ODF9pApcXxhI&s=c85g8L1ozRygk-9THMEsnsmjkIdb8oeeVbqaPzgvLOg&e= 


More information about the dev mailing list