I tested it successfully with 3.13.0-83-generic on Ubuntu trusty. I also acked the patch.
Thanks! -- Russell Bryant On Mon, Mar 21, 2016 at 12:46 PM, Jesse Gross <je...@kernel.org> wrote: > I sent out a patch that I believe should fix this: > http://openvswitch.org/pipermail/dev/2016-March/068150.html > > However, I don't have this exact kernel running anywhere so I only > tested that it doesn't break other kernels. Would one of you mind > trying it out? As long as it builds cleanly, I'm reasonably confident > that it should be OK. > > On Mon, Mar 21, 2016 at 5:56 AM, Russell Bryant <russ...@ovn.org> wrote: > > I believe this is caused by backports done for this bug: > > > > https://bugs.launchpad.net/nova/+bug/1463911 > > > > -- > > Russell Bryant > > > > On Mon, Mar 21, 2016 at 5:16 AM, Russell Bryant <russ...@ovn.org> wrote: > >> > >> FWIW, this issue has broken OpenStack CI with OVN. It was also reported > >> here: > >> > >> http://openvswitch.org/pipermail/dev/2016-March/067987.html > >> > >> On Thu, Mar 17, 2016 at 9:27 AM, Ben Pfaff <b...@ovn.org> wrote: > >>> > >>> Hi Zoltán. It looks like this is really a build problem against a > >>> particular kernel instead of anything to do with Debian packaging. I'm > >>> concerned that the kernel developers might skip over it because it > >>> sounds packaging-specific, so I'm following up with an updated subject > >>> line. > >>> > >>> On Thu, Mar 17, 2016 at 04:03:54PM +0000, Zoltán Balogh wrote: > >>> > Hi, > >>> > > >>> > Recently, I upgraded to Linux kernel version 3.13.0-83-generic from > >>> > version 3.13.0-79-generic. Then I rebuilt the debian packages and > tried to > >>> > install them. Installing the datapath-dkms package failed. > >>> > > >>> > make -C /lib/modules/3.13.0-83-generic/build > >>> > M=/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux > modules > >>> > make[1]: Entering directory > `/usr/src/linux-headers-3.13.0-83-generic' > >>> > CC [M] > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.o > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c: > >>> > In function 'ovs_fragment': > >>> > > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3: > >>> > warning: passing argument 1 of 'v6ops->fragment' from incompatible > pointer > >>> > type [enabled by default] > >>> > v6ops->fragment(skb->sk, skb, ovs_vport_output); > >>> > ^ > >>> > > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3: > >>> > note: expected 'struct sk_buff *' but argument is of type 'struct > sock *' > >>> > > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3: > >>> > warning: passing argument 2 of 'v6ops->fragment' from incompatible > pointer > >>> > type [enabled by default] > >>> > > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3: > >>> > note: expected 'int (*)(struct sk_buff *)' but argument is of type > 'struct > >>> > sk_buff *' > >>> > > >>> > > /var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.c:730:3: > >>> > error: too many arguments to function 'v6ops->fragment' > >>> > make[2]: *** > >>> > > [/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux/actions.o] > >>> > Error 1 > >>> > make[1]: *** > >>> > > [_module_/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux] Error > >>> > 2 > >>> > make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-83-generic' > >>> > make: *** [default] Error 2 > >>> > make: Leaving directory > >>> > `/var/lib/dkms/openvswitch/2.5.0.dpdk2.2/build/datapath/linux' > >>> > > >>> > I compared the include/linux/netfilter_ipv6.h files of the two > kernel > >>> > sources: > >>> > > >>> > diff > >>> > > /usr/src/linux-headers-3.13.0-83-generic/include/linux/netfilter_ipv6.h > >>> > > /usr/src/linux-headers-3.13.0-79-generic/include/linux/netfilter_ipv6.h > >>> > 28d27 > >>> > < int (*fragment)(struct sk_buff *skb, int (*output)(struct > >>> > sk_buff *)); > >>> > > >>> > It seems the new struct member fragment was introduced in nf_ipv6_ops > >>> > in version 3.13.0-83-general: > >>> > > >>> > /* > >>> > * Hook functions for ipv6 to allow xt_* modules to be built-in even > >>> > * if IPv6 is a module. > >>> > */ > >>> > struct nf_ipv6_ops { > >>> > int (*chk_addr)(struct net *net, const struct in6_addr *addr, > >>> > const struct net_device *dev, int strict); > >>> > int (*fragment)(struct sk_buff *skb, int (*output)(struct > sk_buff > >>> > *)); > >>> > }; > >>> > > >>> > While the ovs code defines fragment with three arguments in > >>> > netfilter_ipv6.h and ip6_route.h: > >>> > > >>> > #ifndef HAVE_NF_IPV6_OPS_FRAGMENT > >>> > /* Try to minimise changes required to the actions.c code for calling > >>> > IPv6 > >>> > * fragmentation. We can keep the fragment() API mostly the same, > >>> > except that > >>> > * the callback parameter needs to be in the form that older kernels > >>> > accept. > >>> > * We don't backport the other ipv6_ops as they're currently unused > by > >>> > OVS. */ > >>> > struct ovs_nf_ipv6_ops { > >>> > int (*fragment)(struct sock *sk, struct sk_buff *skb, > >>> > int (*output)(OVS_VPORT_OUTPUT_PARAMS)); > >>> > }; > >>> > #define nf_ipv6_ops ovs_nf_ipv6_ops > >>> > > >>> > #if defined(OVS_FRAGMENT_BACKPORT) > >>> > static struct ovs_nf_ipv6_ops ovs_ipv6_ops = { > >>> > .fragment = ip6_fragment, > >>> > }; > >>> > > >>> > static inline struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void) > >>> > { > >>> > return &ovs_ipv6_ops; > >>> > } > >>> > #else /* !OVS_FRAGMENT_BACKPORT */ > >>> > static inline const struct ovs_nf_ipv6_ops *ovs_nf_get_ipv6_ops(void) > >>> > { > >>> > return NULL; > >>> > } > >>> > #endif > >>> > #define nf_get_ipv6_ops ovs_nf_get_ipv6_ops > >>> > > >>> > --- > >>> > > >>> > #ifndef HAVE_NF_IPV6_OPS_FRAGMENT > >>> > #ifdef OVS_FRAGMENT_BACKPORT > >>> > int rpl_ip6_fragment(struct sock *sk, struct sk_buff *skb, > >>> > int (*output)(OVS_VPORT_OUTPUT_PARAMS)); > >>> > #else > >>> > static inline int rpl_ip6_fragment(struct sock *sk, struct sk_buff > >>> > *skb, > >>> > int (*output)(struct sk_buff *)) > >>> > { > >>> > kfree_skb(skb); > >>> > return -ENOTSUPP; > >>> > } > >>> > #endif /* OVS_FRAGMENT_BACKPORT */ > >>> > #define ip6_fragment rpl_ip6_fragment > >>> > #endif /* HAVE_NF_IPV6_OPS_FRAGMENT */ > >>> > > >>> > Best regards, > >>> > Zoltán > >>> > > >>> > _______________________________________________ > >>> > discuss mailing list > >>> > discuss@openvswitch.org > >>> > http://openvswitch.org/mailman/listinfo/discuss > >>> _______________________________________________ > >>> discuss mailing list > >>> discuss@openvswitch.org > >>> http://openvswitch.org/mailman/listinfo/discuss > >> > >> > >> > >> > >> -- > >> Russell Bryant > > > > > > > > > > -- > > Russell Bryant > -- Russell Bryant
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss