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

Reply via email to