Hi Guru, Thanks for clarifying it. In this case, this patch is not necessary.
Best, Yifeng On Wed, Dec 13, 2017 at 2:24 PM, Guru Shetty <[email protected]> wrote: > > > On 12 December 2017 at 07:59, Yifeng Sun <[email protected]> wrote: > >> Deployment and upgrade failure is quite often caused by that >> openvswitch.ko was >> built upon kernel x.y.z-release-A while it is loaded into a running kernel >> of x.y.z-release-B. This patch proposes to enforce the matching of the two >> kernel release numbers at the moment of deployment and upgrading. >> >> Signed-off-by: Yifeng Sun <[email protected]> >> > > Yifeng, > The issue in question is a little different. What usually happens is that > we build OVS $version (e.g OVS 2.8.0) kernel module for a particular redhat > release (say RHEL 7.4). But, RHEL7.4 updates its minor version (for e.g a > security update). Unless, there is a ABI change in that changed minor > version, we should still be able to use the package that we already built > for the previous minor version. With RHEL 6.x, this was usually not a > problem as the openvswitch.ko that we build would land in weak-updates > directory of redhat kernel of the newer minor version. > > But something has changed with RHEL7.x, where the package that we install > does not land in "weak-updates"., but instead lands in a separate kernel > (the one that we built it for) > The potential solution for it after running some tests looks to be for us > to change the name of /etc/depmod.d/openvswitch.conf to > /etc/depmod.d/01openvswitch.conf and then add a line at the top: > > search extra/openvswitch weak-updates/openvswitch updates extra built-in > weak-updates > > Most likely, with RHEL7.x, there is a new file called > /etc/depmod.d/dist.conf which searches for "search updates extra built-in > weak-updates". So, when the kernel module package from this repo is > installed, it does not land it in "weak-updates" of the running kernel. > > > > >> --- >> datapath/datapath.c | 13 +++++++++++++ >> 1 file changed, 13 insertions(+) >> >> diff --git a/datapath/datapath.c b/datapath/datapath.c >> index 178081993b42..0e3a1db63847 100644 >> --- a/datapath/datapath.c >> +++ b/datapath/datapath.c >> @@ -51,6 +51,8 @@ >> #include <net/genetlink.h> >> #include <net/net_namespace.h> >> #include <net/netns/generic.h> >> +#include <generated/utsrelease.h> >> +#include <linux/utsname.h> >> >> #include "datapath.h" >> #include "conntrack.h" >> @@ -61,6 +63,8 @@ >> #include "vport-internal_dev.h" >> #include "vport-netdev.h" >> >> +static const char *build_kernel_release = UTS_RELEASE; >> + >> unsigned int ovs_net_id __read_mostly; >> >> static struct genl_family dp_packet_genl_family; >> @@ -2406,6 +2410,15 @@ static int __init dp_init(void) >> >> BUILD_BUG_ON(sizeof(struct ovs_skb_cb) > FIELD_SIZEOF(struct >> sk_buff, cb)); >> >> + if (strcmp(build_kernel_release, utsname()->release)) { >> + pr_err("Failed to load Open vSwitch kernel module: " >> + "the modules' built-on kernel release >> (%s) " >> + "doesn't match the running kernel's >> release (%s)\n", >> + build_kernel_release, utsname()->release); >> + err = -EINVAL; >> + goto error; >> + } >> + >> pr_info("Open vSwitch switching datapath %s\n", VERSION); >> >> err = action_fifos_init(); >> -- >> 2.7.4 >> >> > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
