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

Mark Michelson mmichels at redhat.com
Fri Jul 26 14:34:08 UTC 2019


On 7/26/19 8:52 AM, Numan Siddique wrote:
> 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

Hi Numan,

I just attempted this. I did a fresh clone of the ovn repo, checked out 
the up-to-date ovs_ovn_split branch, and then compiled with 
--enable-sparse and --enable-Werror.

I see the following errors:

libtool: compile:  env REAL_CC=gcc "CHECK=sparse -Wsparse-error -I 
./include/sparse -m64 -I /usr/local/include  " cgcc -target=x86_64 
-target=host_os_specs -D__MMX__=1 -D__SSE2_MATH__=1 -D__SSE_MATH__=1 
-D__SSE2__=1 -D__SSE__=1 -DHAVE_CONFIG_H -I. -I ./include -I ./include 
-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 -Werror -Werror -g -O2 -MT lib/rconn.lo -MD 
-MP -MF lib/.deps/rconn.Tpo -c lib/rconn.c -o lib/rconn.o
lib/sat-math.h:46:14: error: undefined identifier 
'__builtin_saddll_overflow'
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:14: error: undefined identifier 
'__builtin_smulll_overflow'
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:72:14: error: undefined identifier 
'__builtin_ssubll_overflow'
lib/sat-math.h:102:39: error: not a function <noident>
lib/sat-math.h:46:39: error: not a function <noident>
lib/sat-math.h:102:39: error: call with no type!
lib/sat-math.h:72:39: error: call with no type!
lib/sat-math.h:46:39: error: call with no type!
make[4]: *** [Makefile:5359: lib/rconn.lo] Error 1

I also see this with the OVS repo. So it likely should be addressed 
there instead, and it shouldn't delay our work of splitting the OVN code 
out.

> 
> 
>> 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
>>>>
>>>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> 



More information about the dev mailing list