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

Numan Siddique nusiddiq at redhat.com
Fri Jul 26 12:21:14 UTC 2019


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 ?

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