[ovs-dev] OVS / OVN split - post 2.12

Numan Siddique nusiddiq at redhat.com
Fri Jul 26 12:52:59 UTC 2019


On Fri, Jul 26, 2019 at 5:51 PM Numan Siddique <nusiddiq at redhat.com> wrote:

>
>
> On Fri, Jul 26, 2019 at 5:19 PM Damijan Skvarc <damjan.skvarc at gmail.com>
> wrote:
>
>> Dumitru,
>> your issue was fixed in
>> https://github.com/openvswitch/ovs/commit/6f6d19db05ca743d6f294618d2c36b6d0b15e2e2
>> as removed warning. However fix is not merged yet on
>> https://github.com/ovn-org/ovn.git. Unfortunatelly even merging this fix
>> to ovn-org/ovn.git will not help, since (saying from memory) by this fix
>> about 1700 warning were removed while there still remained about 70
>> warnings of the same kind at different locations. I would suggest for a
>> while not to consider warnings as errors.
>>
>
> Hi Damijan,
>
> With the OVS/OVN split branch here -
> https://github.com/ovn-org/ovn/commits/ovs_ovn_split, your fix is
> available -
> https://github.com/ovn-org/ovn/blob/ovs_ovn_split/ovs/include/openvswitch/nsh.h#L372
>
> After applying Ilya's patch and manually compiling sparse after reverting
> the commit, I am still seeing the below errors
>
> Do you think we can ignore these errors for now ?
>
>
Found the issue. The acinclude.m4 file in ovn-org/ovn repo is a bit out of
date. The OVS_ENABLE_SPARSE and other SPARSE related macros needs to be
updated. After fixing it, compilation
was successful.

Thanks
Numan


> Thank
> Numan
>
> *******
>  -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers
> -fno-strict-aliasing -Wswitch-bool -Wlogical-not-parentheses
> -Wsizeof-array-argument -Wbool-compare -Wshift-negative-value
> -Wduplicated-cond -Wshadow -Wmultistatement-macros -Wcast-align=strict
> -Werror -Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF $depbase.Tpo -c -o
> lib/acl-log.lo ../lib/acl-log.c &&\
> mv -f $depbase.Tpo $depbase.Plo
> ../ovs/lib/util.h:449:12: error: incorrect type in return expression
> (different base types)
> ../ovs/lib/util.h:449:12:    expected restricted ovs_be32
> ../ovs/lib/util.h:449:12:    got unsigned int
> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3426:34: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3426:34:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3426:34:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
> ../utilities/ovn-nbctl.c:3428:39:    got restricted ovs_be32 [usertype]
> network
> ../utilities/ovn-nbctl.c:3428:39: error: incorrect type in argument 1
> (different base types)
> ../utilities/ovn-nbctl.c:3428:39:    expected unsigned int [usertype] __bsx
> ...
> ...
> make[2]: *** Waiting for unfinished jobs....
> libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
> ../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
> -DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I ../ovs/lib
> -I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib -Wstrict-prototypes
> -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
> -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
> -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
> -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros
> -Wcast-align=strict -Werror -Werror -g -O2 -MT lib/acl-log.lo -MD -MP -MF
> lib/.deps/acl-log.Tpo -c ../lib/acl-log.c -o lib/acl-log.o
> libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I
> ../include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64
> -DHAVE_CONFIG_H -I. -I.. -I ../ovs/include -I ./ovs/include -I ../ovs/lib
> -I ./ovs/lib -I ../ovs -I ./ovs -I ../lib -I ./lib -Wstrict-prototypes
> -Wall -Wextra -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
> -Wmissing-field-initializers -fno-strict-aliasing -Wswitch-bool
> -Wlogical-not-parentheses -Wsizeof-array-argument -Wbool-compare
> -Wshift-negative-value -Wduplicated-cond -Wshadow -Wmultistatement-macros
> -Wcast-align=strict -Werror -Werror -g -O2 -MT lib/actions.lo -MD -MP -MF
> lib/.deps/actions.Tpo -c ../lib/actions.c -o lib/actions.o
> ../lib/actions.c:723:32: error: incorrect type in initializer (different
> base types)
> ../lib/actions.c:723:32:    expected restricted ovs_be32 const [usertype]
> value
> ../lib/actions.c:723:32:    got unsigned int
> ../lib/actions.c:724:31: error: incorrect type in initializer (different
> base types)
> ../lib/actions.c:724:31:    expected restricted ovs_be32 const [usertype]
> mask
> ../lib/actions.c:724:31:    got unsigned int
> ../lib/actions.c:976:42: error: incorrect type in argument 1 (different
> base types)
> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
> ../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
> ../lib/actions.c:976:42: error: incorrect type in argument 1 (different
> base types)
> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
> ../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
> ../lib/actions.c:976:42: error: incorrect type in argument 1 (different
> base types)
> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
> ../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
> ../lib/actions.c:976:42: error: incorrect type in argument 1 (different
> base types)
> ../lib/actions.c:976:42:    expected unsigned int [usertype] __bsx
> ../lib/actions.c:976:42:    got restricted ovs_be32 const [usertype] ipv4
> ../lib/actions.c:1970:20: error: incorrect type in initializer (different
> base types)
> ../lib/actions.c:1970:20:    expected restricted ovs_be32 [usertype] ofs
> ../lib/actions.c:1970:20:    got unsigned int
> *********
>
>
>
>>
>> br,Damijan
>>
>> On Fri, Jul 26, 2019 at 10:30 AM Dumitru Ceara <dceara at redhat.com> wrote:
>>
>>> On Fri, Jul 26, 2019 at 8:21 AM Numan Siddique <nusiddiq at redhat.com>
>>> wrote:
>>> >
>>> > Hello All,
>>> >
>>> > The split work is almost done and we have pushed it to the ovn repo
>>> branch
>>> > for now - https://github.com/ovn-org/ovn/commits/ovs_ovn_split
>>> > If some one is interested, please try it out and let us know any
>>> comments
>>> > or issues.
>>>
>>> Hi Numan,
>>>
>>> It looks like the ovs_ovn_split branch doesn't build:
>>>
>>> # git clone https://github.com/ovn-org/ovn.git ovn
>>> # cd ovn
>>> # ./boot.sh
>>> # ./configure --enable-Werror --enable-sparse
>>> # make
>>> make  all-recursive
>>> make[1]: Entering directory `/root/ovn'
>>> Making all in ovs
>>> make[2]: Entering directory `/root/ovn/ovs'
>>> make  all-recursive
>>> make[3]: Entering directory `/root/ovn/ovs'
>>> Making all in datapath
>>> make[4]: Entering directory `/root/ovn/ovs/datapath'
>>> make[5]: Entering directory `/root/ovn/ovs/datapath'
>>> make[5]: Leaving directory `/root/ovn/ovs/datapath'
>>> make[4]: Leaving directory `/root/ovn/ovs/datapath'
>>> make[4]: Entering directory `/root/ovn/ovs'
>>> make[4]: Leaving directory `/root/ovn/ovs'
>>> make[3]: Leaving directory `/root/ovn/ovs'
>>> make[2]: Leaving directory `/root/ovn/ovs'
>>> make[2]: Entering directory `/root/ovn'
>>> depbase=`echo lib/acl-log.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||'`;\
>>> /bin/sh ./libtool  --tag=CC   --mode=compile env REAL_CC="gcc
>>> -std=gnu99" CHECK="sparse -Wsparse-error -I ./include/sparse -m64 -I
>>> /usr/local/include  " cgcc -target=x86_64 -DHAVE_CONFIG_H -I.    -I
>>> ./ovs/include -I ./ovs/include -I ./ovs/lib -I ./ovs/lib -I ./ovs -I
>>> ./ovs -I ./lib -I ./lib    -Wstrict-prototypes -Wall -Wextra
>>> -Wno-sign-compare -Wpointer-arith -Wformat -Wformat-security
>>> -Wswitch-enum -Wunused-parameter -Wbad-function-cast -Wcast-align
>>> -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes
>>> -Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
>>> -Werror   -g -O2 -MT lib/acl-log.lo -MD -MP -MF $depbase.Tpo -c -o
>>> lib/acl-log.lo lib/acl-log.c &&\
>>> mv -f $depbase.Tpo $depbase.Plo
>>> libtool: compile:  env "REAL_CC=gcc -std=gnu99" "CHECK=sparse
>>> -Wsparse-error -I ./include/sparse -m64 -I /usr/local/include  " cgcc
>>> -target=x86_64 -DHAVE_CONFIG_H -I. -I ./ovs/include -I ./ovs/include
>>> -I ./ovs/lib -I ./ovs/lib -I ./ovs -I ./ovs -I ./lib -I ./lib
>>> -Wstrict-prototypes -Wall -Wextra -Wno-sign-compare -Wpointer-arith
>>> -Wformat -Wformat-security -Wswitch-enum -Wunused-parameter
>>> -Wbad-function-cast -Wcast-align -Wstrict-prototypes
>>> -Wold-style-definition -Wmissing-prototypes
>>> -Wmissing-field-initializers -fno-strict-aliasing -Wshadow -Werror
>>> -Werror -g -O2 -MT lib/acl-log.lo -MD -MP -MF lib/.deps/acl-log.Tpo -c
>>> lib/acl-log.c -o lib/acl-log.o
>>> ./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__v' shadows an
>>> earlier one
>>> ./ovs/include/openvswitch/nsh.h:372:11: originally declared here
>>> ./ovs/include/openvswitch/nsh.h:372:11: error: symbol '__x' shadows an
>>> earlier one
>>> ./ovs/include/openvswitch/nsh.h:372:11: originally declared here
>>> ./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__v' shadows an
>>> earlier one
>>> ./ovs/include/openvswitch/nsh.h:383:11: originally declared here
>>> ./ovs/include/openvswitch/nsh.h:383:11: error: symbol '__x' shadows an
>>> earlier one
>>> ./ovs/include/openvswitch/nsh.h:383:11: originally declared here
>>> make[2]: *** [lib/acl-log.lo] Error 1
>>>
>>> Building ovs master works fine for me:
>>>
>>> # git clone https://github.com/openvswitch/ovs.git ovs
>>> # cd ovs
>>> # ./boot.sh
>>> # ./configure --enable-Werror --enable-sparse
>>> # make
>>> <snip>
>>> mv tests/system-afxdp-testsuite.tmp tests/system-afxdp-testsuite
>>> mv tests/system-kmod-testsuite.tmp tests/system-kmod-testsuite
>>> mv tests/system-userspace-testsuite.tmp tests/system-userspace-testsuite
>>> touch -c manpage-check
>>> mv tests/testsuite.tmp tests/testsuite
>>> make[2]: Leaving directory `/root/ovs'
>>> make[1]: Leaving directory `/root/ovs'
>>>
>>> Regards,
>>> Dumitru
>>>
>>> >
>>> > We are planning to push the changes to the master branch hopefully
>>> Friday
>>> > if everything goes fine.
>>> >
>>> > Thanks
>>> > Numan
>>> >
>>> >
>>> > On Fri, Jul 26, 2019 at 12:05 AM Mark Michelson <mmichels at redhat.com>
>>> wrote:
>>> >
>>> > > On 7/25/19 12:37 PM, Ilya Maximets wrote:
>>> > > > Hi.
>>> > > >
>>> > > > I have a question regarding the split.
>>> > > > Sorry if it's obvious from the RFC splitting code which I didn't
>>> look at.
>>> > > >
>>> > > > The question is:
>>> > > > How the patches for the common data structures (lists, hash maps)
>>> will be
>>> > > > applied to OVN? Will we need to post same patch for both
>>> repositories in
>>> > > the
>>> > > > future if it changes/fixes common libraries? Or all this code will
>>> be
>>> > > hosted
>>> > > > only in OVS repo and will be included like a submodule or
>>> something like
>>> > > that?
>>> > > >
>>> > > > Best regards, Ilya Maximets.
>>> > >
>>> > > Hi Ilya,
>>> > >
>>> > > OVN will be a separate repo from OVS. Initially, OVS will be a
>>> subtree
>>> > > of OVN, but soon, we will want to be able to build OVN while having a
>>> > > completely separate OVS on the system. When all is said and done, it
>>> > > should be possible to build OVN as long as you have, say, an
>>> ovs-devel
>>> > > package installed on your system.
>>> > >
>>> > > I think the answer to your question is that as an OVS developer, if
>>> you
>>> > > make a change to a core component, you only need to post the change
>>> to
>>> > > the OVS repo.
>>> > >
>>> > >  From an OVN developer's perspective, if an OVN feature/bugfix
>>> requires
>>> > > a parallel change to be made to a core OVS library, then the OVN
>>> > > developer will need to post the library change to OVS as well as the
>>> > > usage of that change to OVN. As long as OVS is a subtree of OVN, it's
>>> > > just a matter of ensuring the subtree is kept up to date. However,
>>> once
>>> > > OVS is built separately, then configure-time checks of OVS features
>>> or
>>> > > minimum version checks will need to be added to OVN to ensure that
>>> the
>>> > > code can build properly.
>>> > >
>>> > > This approach should place most of the burden of OVN compatibility
>>> with
>>> > > OVS on OVN developers rather than OVS developers.
>>> > > >
>>> > > >> Numan and I have discussed this, and we're planning to perform
>>> the split
>>> > > >> tomorrow July 25. Numan will be applying the commits he
>>> referenced below
>>> > > >> to the ovn-org branch to get it up to date. I will be submitting a
>>> > > >> review for OVS to remove all of the OVN code, documentation, etc.
>>> from
>>> > > it.
>>> > > >>
>>> > > >> If there are any reasons why we should hold off on this, please
>>> mention
>>> > > >> them as soon as possible.
>>> > > >>
>>> > > >> Thanks
>>> > > >>
>>> > > >> On 7/22/19 2:35 PM, Numan Siddique wrote:
>>> > > >>> Hi Ben, Mark and All,
>>> > > >>>
>>> > > >>> Now that branch 2.12 is created, shall we proceed with the
>>> OVS/OVN
>>> > > split ?
>>> > > >>>
>>> > > >>> In order to do the split we need to do the below tasks
>>> > > >>>
>>> > > >>> In ovn-org/ovn repo
>>> > > >>> Step 1. Sync the ovs subtree to the latest (from the OVS repo).
>>> > > >>> 2. Delete all the ovn related code from the root dir. Right now
>>> there
>>> > > is
>>> > > >>> no history for the OVN files in the ovn-org/ovn repo
>>> > > >>> 3. Copy OVN files from openvswitch/ovs repo using
>>> git-filter-branch.
>>> > > >>> This will preserver the history.
>>> > > >>> 4. Sync the test files from ovs subtree so that tests pass.
>>> > > >>>
>>> > > >>> During this period its better to freeze merging OVN related
>>> patches in
>>> > > >>> the OVS repo.
>>> > > >>> And finally delete the OVN related code from the OVS repo.
>>> > > >>>
>>> > > >>> I have done a PoC here -
>>> > > >>>
>>> https://github.com/numansiddique/ovn/commits/ovn_sync_from_ovs_v3/p4
>>> > > >>> All the relates commits can be found here.
>>> > > >>>
>>> > > >>>
>>> > > >>> Does these steps seem fine ? Any concerns ?
>>> > > >>> If this seems fine, can we choose a date to start this process ?
>>> > > >>>
>>> > > >>> Thanks
>>> > > >>> Numan
>>> > > >>>
>>> > > >
>>> > >
>>> > >
>>> > _______________________________________________
>>> > dev mailing list
>>> > dev at openvswitch.org
>>> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>> _______________________________________________
>>> dev mailing list
>>> dev at openvswitch.org
>>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>>
>>


More information about the dev mailing list