On 05/14/2014 12:56 AM, Jesse Gross wrote:
> On Tue, May 13, 2014 at 1:52 PM, Andrey Korolyov <and...@xdel.ru> wrote:
>> On Wed, May 14, 2014 at 12:44 AM, Jesse Gross <je...@nicira.com> wrote:
>>> On Tue, May 13, 2014 at 1:25 PM, Andrey Korolyov <and...@xdel.ru> wrote:
>>>> On Wed, May 14, 2014 at 12:19 AM, Jesse Gross <je...@nicira.com> wrote:
>>>>> On Tue, May 13, 2014 at 1:58 AM, Andrey Korolyov <and...@xdel.ru> wrote:
>>>>>> On Tue, May 13, 2014 at 4:41 AM, Jesse Gross <je...@nicira.com> wrote:
>>>>>>> On Mon, May 12, 2014 at 2:04 PM, Andrey Korolyov <and...@xdel.ru> wrote:
>>>>>>>> On Tue, May 13, 2014 at 12:58 AM, Jesse Gross <je...@nicira.com> wrote:
>>>>>>>>> On Sat, May 10, 2014 at 2:13 PM, Andrey Korolyov <and...@xdel.ru> 
>>>>>>>>> wrote:
>>>>>>>>>> Hello,
>>>>>>>>>>
>>>>>>>>>> sorry for bringing this old thread on top, but right now building
>>>>>>>>>> against current RHEL 3.10.121.el7 seems not possible without
>>>>>>>>>> patchwork. After fixing some obvious kversion checks and code
>>>>>>>>>> snippets, I had stuck on f067987973facf28916a2f5ee48bf02ce5938bf8:
>>>>>>>>>>
>>>>>>>>>> In file included from
>>>>>>>>>> /builder/rpmbuild/BUILD/openvswitch-2.1.3/_default/../datapath/linux/compat/include/net/gre.h:9:0,
>>>>>>>>>>                  from
>>>>>>>>>> /builder/rpmbuild/BUILD/openvswitch-2.1.3/_default/datapath/linux/vport-gre.c:44:
>>>>>>>>>> include/net/gre.h: In function ‘gre_handle_offloads’:
>>>>>>>>>> include/net/gre.h:42:2: error: implicit declaration of function
>>>>>>>>>> ‘iptunnel_handle_offloads’ [-Werror=implicit-function-declaration]
>>>>>>>>>>   return iptunnel_handle_offloads(skb, gre_csum, SKB_GSO_GRE);
>>>>>>>>>>   ^
>>>>>>>>>> include/net/gre.h:42:2: warning: return makes pointer from integer
>>>>>>>>>> without a cast [enabled by default]
>>>>>>>>>> cc1: some warnings being treated as errors
>>>>>>>>>>
>>>>>>>>>> Bare look says that this snippet should be modified more intensively
>>>>>>>>>> than by one-line patch to work well, so I thought it would be better
>>>>>>>>>> to ask there on how to fix this properly.
>>>>>>>>>
>>>>>>>>> What version of OVS is this and which patch are you specifically 
>>>>>>>>> referring to?
>>>>>>>>
>>>>>>>> Sorry if it was unclear, I pointed hash above, it` s 2.1.2. By patch I
>>>>>>>> meant one-liners which helps to mock kernel version checking in the
>>>>>>>> places where conflict of backported functions can take place. I
>>>>>>>> replaced failed checks one by one and then stuck with error above.
>>>>>>>> Actually, both gre.h - from compat/ and from RH kernel headers
>>>>>>>> resulting to this error if one want to try to point them explicitly.
>>>>>>>
>>>>>>> Can you post the changes you had to make to get to this point? I would
>>>>>>> expect that HAVE_GRE_CISCO_REGISTER would be defined and so there
>>>>>>> should be relatively little that is version specific.
>>>>>>>
>>>>>>> Have you also tried branch-2.2 or master?
>>>>>>
>>>>>> There are no such thing in public repo as branch-2.2, so with master
>>>>>> 75264fe5f1ceb73a33bcc8e1adb3ad9aad57237d I`ve got the same. Please
>>>>>> take a look on the attached patch. Also mind that the change in
>>>>>> datapath.c is purely a mock to pass through it to next failure and
>>>>>> shouldn`t go anywhere :)
>>>>>
>>>>> OK - I see. These changes are just miscellaneous backports and not in
>>>>> the tunnel code as I thought you were saying. I don't have a copy of
>>>>> the RHEL 7 beta source handy but it seems like this could be a missing
>>>>> definition in those headers. OVS should just be using the tunnel code
>>>>> from the kernel headers and the use of iptunnel_handle_offloads()
>>>>> would be from there. If they use it, they should also define it...
>>>>
>>>> You can use srpm for headers:
>>>> http://ftp.redhat.com/redhat/rhel/rc/7/ComputeNode/source/tree/Packages/kernel-3.10.0-121.el7.src.rpm
>>>
>>> Since you're already working in this code, it might be faster for you
>>> to take a look.
>>
>> Ok, will check tomorrow morning, but since RH-Oracle counterstand took
>> place, there are no reliable changelog except text remarks in the spec
>> file, so it`s a bit uneasy to say which bits should be presented and
>> which should not...
> 
> I would just look into how and where iptunnel_handle_offloads is used
> and defined. I don't think that there is really more to it than that.
> OVS is using the GRE receive code wholesale in this version so there
> shouldn't be any tricky dependencies.
> 

I had modified checks a little, so right now module compiles but there
are unported fixes after 3.11 for ip_tunnel stuff which are doing build
warnings. Also differences in declaration of skb_zerocopy (void vs
non-void) making proper build impossible without porting all code
related to this function from RH`s version of queue_userspace_packet to
mainline using a lot of ``if'' blocks. Please take a look on a revised
patch and attached build log. I`ve added some folks in CC who are known
for work on OVS subsystem of RedHat kernel, so they may have a word on
which changes will be incorporated in next minor kernel release and
resulting patch can be created without wasting much effort away.



diff -ru a/datapath.c b/datapath.c
--- a/datapath.c	2014-05-13 08:12:10.000000000 +0400
+++ b/datapath.c	2014-05-14 19:12:11.231467041 +0400
@@ -497,9 +497,7 @@
 	}
 	nla->nla_len = nla_attr_size(skb->len);
 
-	err = skb_zerocopy(user_skb, skb, skb->len, hlen);
-	if (err)
-		goto out;
+	skb_zerocopy(user_skb, skb, skb->len, hlen);
 
 	/* Pad OVS_PACKET_ATTR_PACKET if linear copy was performed */
 	if (!(dp->user_features & OVS_DP_F_UNALIGNED)) {
diff -ru a/linux/compat/include/linux/hash.h b/linux/compat/include/linux/hash.h
--- a/linux/compat/include/linux/hash.h	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/include/linux/hash.h	2014-05-14 19:12:07.035455358 +0400
@@ -4,7 +4,7 @@
 #include_next <linux/hash.h>
 
 #include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 #include <asm/hash.h>
 
 struct fast_hash_ops {
diff -ru a/linux/compat/include/linux/skbuff.h b/linux/compat/include/linux/skbuff.h
--- a/linux/compat/include/linux/skbuff.h	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/include/linux/skbuff.h	2014-05-14 19:12:07.034455416 +0400
@@ -277,7 +277,7 @@
 }
 #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 unsigned int skb_zerocopy_headlen(const struct sk_buff *from);
 int skb_zerocopy(struct sk_buff *to, struct sk_buff *from, int len,
 		  int hlen);
diff -ru a/linux/compat/include/net/genetlink.h b/linux/compat/include/net/genetlink.h
--- a/linux/compat/include/net/genetlink.h	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/include/net/genetlink.h	2014-05-14 19:12:07.037455247 +0400
@@ -96,7 +96,7 @@
 
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 static inline struct sk_buff *genlmsg_new_unicast(size_t payload,
 						  struct genl_info *info,
 						  gfp_t flags)
diff -ru a/linux/compat/include/net/ip_tunnels.h b/linux/compat/include/net/ip_tunnels.h
--- a/linux/compat/include/net/ip_tunnels.h	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/include/net/ip_tunnels.h	2014-05-14 19:20:40.002146046 +0400
@@ -2,7 +2,7 @@
 #define __NET_IP_TUNNELS_WRAPPER_H 1
 
 #include <linux/version.h>
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0)
 #include_next <net/ip_tunnels.h>
 #else
 
diff -ru a/linux/compat/ip_tunnels_core.c b/linux/compat/ip_tunnels_core.c
--- a/linux/compat/ip_tunnels_core.c	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/ip_tunnels_core.c	2014-05-14 19:21:49.264500651 +0400
@@ -17,7 +17,7 @@
  */
 
 #include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
diff -ru a/linux/compat/skbuff-openvswitch.c b/linux/compat/skbuff-openvswitch.c
--- a/linux/compat/skbuff-openvswitch.c	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/skbuff-openvswitch.c	2014-05-14 19:22:31.992726145 +0400
@@ -15,7 +15,7 @@
 
 #endif
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 
 static inline bool head_frag(const struct sk_buff *skb)
 {
diff -ru a/linux/compat/vxlan.c b/linux/compat/vxlan.c
--- a/linux/compat/vxlan.c	2014-05-13 08:12:10.000000000 +0400
+++ b/linux/compat/vxlan.c	2014-05-14 19:25:50.408761017 +0400
@@ -19,7 +19,7 @@
  */
 
 #include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,10,0)
 
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
make[1]: Entering directory `/root/openvswitch-75264fe'
make[1]: Leaving directory `/root/openvswitch-75264fe'
Making all in linux
make[1]: Entering directory `/root/openvswitch-75264fe/datapath/linux'
ln -s /root/openvswitch-75264fe/datapath/linux/../actions.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../datapath.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../dp_notify.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../flow.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../flow_netlink.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../flow_table.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport-gre.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport-internal_dev.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport-lisp.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport-netdev.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../vport-vxlan.c 
ln -s 
/root/openvswitch-75264fe/datapath/linux/../linux/compat/dev-openvswitch.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/exthdrs_core.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/flex_array.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/flow_dissector.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/gre.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/gso.c 
ln -s 
/root/openvswitch-75264fe/datapath/linux/../linux/compat/genetlink-openvswitch.c
 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/hash.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/hash-x86.c 
ln -s 
/root/openvswitch-75264fe/datapath/linux/../linux/compat/ip_tunnels_core.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/netdevice.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/net_namespace.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/reciprocal_div.c 
ln -s 
/root/openvswitch-75264fe/datapath/linux/../linux/compat/skbuff-openvswitch.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/vxlan.c 
ln -s /root/openvswitch-75264fe/datapath/linux/../linux/compat/utils.c 
make -C /usr/src/kernels/3.10.0-121.el7.x86_64/ 
M=/root/openvswitch-75264fe/datapath/linux modules
make[2]: Entering directory `/usr/src/kernels/3.10.0-121.el7.x86_64'
  CC [M]  /root/openvswitch-75264fe/datapath/linux/actions.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/datapath.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/dp_notify.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/flow.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/flow_netlink.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/flow_table.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport-gre.o
In file included from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:47:0:
/root/openvswitch-75264fe/datapath/linux/vport-gre.c: In function ‘__send’:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 1 of ‘iptunnel_xmit’ from incompatible pointer type [enabled by 
default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-gre.c:200:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:43:
include/net/ip_tunnels.h:159:5: note: expected ‘struct net *’ but argument is 
of type ‘struct rtable *’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
In file included from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:47:0:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 2 of ‘iptunnel_xmit’ from incompatible pointer type [enabled by 
default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-gre.c:200:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:43:
include/net/ip_tunnels.h:159:5: note: expected ‘struct rtable *’ but argument 
is of type ‘struct sk_buff *’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
In file included from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:47:0:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 3 of ‘iptunnel_xmit’ makes pointer from integer without a cast 
[enabled by default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-gre.c:200:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/vport-gre.c:43:
include/net/ip_tunnels.h:159:5: note: expected ‘struct sk_buff *’ but argument 
is of type ‘__be32’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport-internal_dev.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport-lisp.o
In file included from 
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:0:
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c: In function ‘lisp_send’:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 1 of ‘iptunnel_xmit’ from incompatible pointer type [enabled by 
default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:489:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/../flow.h:36,
                 from /root/openvswitch-75264fe/datapath/linux/../datapath.h:30,
                 from /root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:
include/net/ip_tunnels.h:159:5: note: expected ‘struct net *’ but argument is 
of type ‘struct rtable *’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:0:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 2 of ‘iptunnel_xmit’ from incompatible pointer type [enabled by 
default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:489:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/../flow.h:36,
                 from /root/openvswitch-75264fe/datapath/linux/../datapath.h:30,
                 from /root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:
include/net/ip_tunnels.h:159:5: note: expected ‘struct rtable *’ but argument 
is of type ‘struct sk_buff *’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:0:
/root/openvswitch-75264fe/datapath/linux/../datapath.h:111:30: warning: passing 
argument 3 of ‘iptunnel_xmit’ makes pointer from integer without a cast 
[enabled by default]
 #define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
                              ^
/root/openvswitch-75264fe/datapath/linux/vport-lisp.c:489:9: note: in expansion 
of macro ‘OVS_CB’
         OVS_CB(skb)->tun_key->ipv4_ttl, df, false);
         ^
In file included from 
/root/openvswitch-75264fe/datapath/linux/compat/include/net/ip_tunnels.h:6:0,
                 from /root/openvswitch-75264fe/datapath/linux/../flow.h:36,
                 from /root/openvswitch-75264fe/datapath/linux/../datapath.h:30,
                 from /root/openvswitch-75264fe/datapath/linux/vport-lisp.c:36:
include/net/ip_tunnels.h:159:5: note: expected ‘struct sk_buff *’ but argument 
is of type ‘__be32’
 int iptunnel_xmit(struct net *net, struct rtable *rt,
     ^
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport-netdev.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vport-vxlan.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/dev-openvswitch.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/exthdrs_core.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/flex_array.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/flow_dissector.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/gre.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/gso.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/genetlink-openvswitch.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/hash.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/hash-x86.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/ip_tunnels_core.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/netdevice.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/net_namespace.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/reciprocal_div.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/skbuff-openvswitch.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/vxlan.o
  CC [M]  /root/openvswitch-75264fe/datapath/linux/utils.o
  LD [M]  /root/openvswitch-75264fe/datapath/linux/openvswitch.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /root/openvswitch-75264fe/datapath/linux/openvswitch.mod.o
  LD [M]  /root/openvswitch-75264fe/datapath/linux/openvswitch.ko
make[2]: Leaving directory `/usr/src/kernels/3.10.0-121.el7.x86_64'
make[1]: Leaving directory `/root/openvswitch-75264fe/datapath/linux'
make[1]: Entering directory `/root/openvswitch-75264fe/datapath'
make[2]: Entering directory `/root/openvswitch-75264fe'
make[2]: Leaving directory `/root/openvswitch-75264fe'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/root/openvswitch-75264fe/datapath'
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to