From a166054fc3233ff9735967df958658d452dee11ebd86bac79ae03b05dfe5c5a6 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Fri, 27 Jul 2012 16:38:53 +0000 Subject: [PATCH] Accepting request 128990 from home:rhafer:branches:network 12.2 and newer use different names for the kernel modules OBS-URL: https://build.opensuse.org/request/show/128990 OBS-URL: https://build.opensuse.org/package/show/network/openvswitch?expand=0&rev=12 --- openvswitch-mod-rename.patch | 353 +++++++++++++++++++++++++++++++++++ openvswitch.changes | 7 + openvswitch.spec | 5 + 3 files changed, 365 insertions(+) create mode 100644 openvswitch-mod-rename.patch diff --git a/openvswitch-mod-rename.patch b/openvswitch-mod-rename.patch new file mode 100644 index 0000000..de0dc95 --- /dev/null +++ b/openvswitch-mod-rename.patch @@ -0,0 +1,353 @@ +This is based on the following upstream commit, adjusted to apply +against the 1.6.1 release: + + From 9b80f761bed9a32c1b0eb22ee3361966057ea973 Mon Sep 17 00:00:00 2001 + From: Chris Wright + Date: Fri, 9 Mar 2012 09:55:45 -0800 + Subject: [PATCH] datapath: omit _mod from module names + + This renames the datapath modules: + + openvswitch_mod -> openvswitch + brcompat_mod -> brcompat + + The first makes the module name consistent with upstream, and the latter + is just for internal consistency. This makes tools, and documentation + refer to a common module name regardless if it's coming from upstream + linux or built from datapath/ as part of a local build. + + Signed-off-by: Chris Wright + Signed-off-by: Jesse Gross + +Index: openvswitch-1.6.1/INSTALL.Linux +=================================================================== +--- openvswitch-1.6.1.orig/INSTALL.Linux ++++ openvswitch-1.6.1/INSTALL.Linux +@@ -194,16 +194,16 @@ Prerequisites section, follow the proced + + 6. If you built kernel modules, you may load them with "insmod", e.g.: + +- % insmod datapath/linux/openvswitch_mod.ko ++ % insmod datapath/linux/openvswitch.ko + + You may need to specify a full path to insmod, e.g. /sbin/insmod. + To verify that the modules have been loaded, run "/sbin/lsmod" and +- check that openvswitch_mod is listed. ++ check that openvswitch is listed. + + If the "insmod" operation fails, look at the last few kernel log + messages (e.g. with "dmesg | tail"): + +- - The message "openvswitch_mod: exports duplicate symbol ++ - The message "openvswitch: exports duplicate symbol + br_should_route_hook (owned by bridge)" means that the bridge + module is loaded. Run "/sbin/rmmod bridge" to remove it. + +@@ -212,7 +212,7 @@ Prerequisites section, follow the proced + the kernel, rather than as a module. Open vSwitch does not + support this configuration (see "Build Requirements", above). + +- - The message "openvswitch_mod: exports duplicate symbol ++ - The message "openvswitch: exports duplicate symbol + dp_ioctl_hook (owned by ofdatapath)" means that the ofdatapath + module from the OpenFlow reference implementation is loaded. + Run "/sbin/rmmod ofdatapath" to remove it. (You might have to +@@ -222,10 +222,10 @@ Prerequisites section, follow the proced + + - Otherwise, the most likely problem is that Open vSwitch was + built for a kernel different from the one into which you are +- trying to load it. Run "modinfo" on openvswitch_mod.ko and on ++ trying to load it. Run "modinfo" on openvswitch.ko and on + a module built for the running kernel, e.g.: + +- % /sbin/modinfo openvswitch_mod.ko ++ % /sbin/modinfo openvswitch.ko + % /sbin/modinfo /lib/modules/`uname -r`/kernel/net/bridge/bridge.ko + + Compare the "vermagic" lines output by the two commands. If +@@ -235,7 +235,7 @@ Prerequisites section, follow the proced + module loading, please include the output from the "dmesg" and + "modinfo" commands mentioned above. + +- There is an optional module parameter to openvswitch_mod.ko called ++ There is an optional module parameter to openvswitch.ko called + vlan_tso that enables TCP segmentation offload over VLANs on NICs + that support it. Many drivers do not expose support for TSO on VLANs + in a way that Open vSwitch can use but there is no way to detect +Index: openvswitch-1.6.1/INSTALL.XenServer +=================================================================== +--- openvswitch-1.6.1.orig/INSTALL.XenServer ++++ openvswitch-1.6.1/INSTALL.XenServer +@@ -105,7 +105,7 @@ When Open vSwitch is installed on XenSer + /etc/init.d/openvswitch runs early in boot. It does roughly the + following: + +- * Loads the OVS kernel module, openvswitch_mod. ++ * Loads the OVS kernel module, openvswitch. + + * Starts ovsdb-server, the OVS configuration database. + +Index: openvswitch-1.6.1/INSTALL.bridge +=================================================================== +--- openvswitch-1.6.1.orig/INSTALL.bridge ++++ openvswitch-1.6.1/INSTALL.bridge +@@ -34,9 +34,9 @@ kernel bridge module. + + 2. Load the brcompat kernel module (which was built in step 1), e.g.: + +- % insmod datapath/linux/brcompat_mod.ko ++ % insmod datapath/linux/brcompat.ko + +- (openvswitch_mod.ko should already have been loaded.) ++ (openvswitch.ko should already have been loaded.) + + 3. Start ovs-brcompatd: + +Index: openvswitch-1.6.1/datapath/brcompat.c +=================================================================== +--- openvswitch-1.6.1.orig/datapath/brcompat.c ++++ openvswitch-1.6.1/datapath/brcompat.c +@@ -542,7 +542,7 @@ static int __init brc_init(void) + /* Set the bridge ioctl handler */ + brioctl_set(brc_ioctl_deviceless_stub); + +- /* Set the openvswitch_mod device ioctl handler */ ++ /* Set the openvswitch device ioctl handler */ + ovs_dp_ioctl_hook = brc_dev_ioctl; + + /* Randomize the initial sequence number. This is not a security +@@ -591,7 +591,7 @@ MODULE_LICENSE("GPL"); + /* + * In kernels 2.6.36 and later, Open vSwitch can safely coexist with + * the Linux bridge module, but it does not make sense to load both bridge and +- * brcompat_mod, so this prevents it. ++ * brcompat, so this prevents it. + */ + BRIDGE_MUTUAL_EXCLUSION; + #endif +Index: openvswitch-1.6.1/datapath/compat.h +=================================================================== +--- openvswitch-1.6.1.orig/datapath/compat.h ++++ openvswitch-1.6.1/datapath/compat.h +@@ -58,12 +58,12 @@ static inline void skb_clear_rxhash(stru + * exporting br_should_route_hook. Because the bridge module also exports the + * same symbol, the module loader will refuse to load both modules at the same + * time (e.g. "bridge: exports duplicate symbol br_should_route_hook (owned by +- * openvswitch_mod)"). ++ * openvswitch)"). + * + * Before Linux 2.6.36, Open vSwitch cannot safely coexist with the Linux +- * bridge module, so openvswitch_mod uses this macro in those versions. In +- * Linux 2.6.36 and later, Open vSwitch can coexist with the bridge module, but +- * it makes no sense to load both bridge and brcompat_mod, so brcompat_mod uses ++ * bridge module, so openvswitch uses this macro in those versions. In ++ * Linux 2.6.36 and later, Open vSwitch can coexist with the bridge module, ++ * but it makes no sense to load both bridge and brcompat, so brcompat uses + * this macro in those versions. + * + * The use of "typeof" here avoids the need to track changes in the type of +Index: openvswitch-1.6.1/datapath/linux/Kbuild.in +=================================================================== +--- openvswitch-1.6.1.orig/datapath/linux/Kbuild.in ++++ openvswitch-1.6.1/datapath/linux/Kbuild.in +@@ -24,10 +24,10 @@ EXTRA_CFLAGS += -include $(builddir)/kco + # right place, even though it's conceptually incorrect. + NOSTDINC_FLAGS += -I$(top_srcdir)/include -I$(srcdir)/compat -I$(srcdir)/compat/include + +-obj-m := $(patsubst %,%_mod.o,$(build_modules)) ++obj-m := $(patsubst %,%.o,$(build_modules)) + + define module_template +-$(1)_mod-y = $$(notdir $$(patsubst %.c,%.o,$($(1)_sources))) ++$(1)-y = $$(notdir $$(patsubst %.c,%.o,$($(1)_sources))) + endef + + $(foreach module,$(build_modules),$(eval $(call module_template,$(module)))) +Index: openvswitch-1.6.1/datapath/linux/Makefile.main.in +=================================================================== +--- openvswitch-1.6.1.orig/datapath/linux/Makefile.main.in ++++ openvswitch-1.6.1/datapath/linux/Makefile.main.in +@@ -29,7 +29,7 @@ check: all + installcheck: + mostlyclean: + clean: +- rm -f *.o *.ko *_mod.* Module.symvers *.cmd kcompat.h.new ++ rm -f *.o *.ko *.mod.* Module.symvers *.cmd kcompat.h.new + for d in $(build_links); do if test -h $$d; then rm $$d; fi; done + distclean: clean + rm -f kcompat.h +Index: openvswitch-1.6.1/datapath/linux/compat/genetlink-brcompat.c +=================================================================== +--- openvswitch-1.6.1.orig/datapath/linux/compat/genetlink-brcompat.c ++++ openvswitch-1.6.1/datapath/linux/compat/genetlink-brcompat.c +@@ -1,5 +1,5 @@ + /* We fix grp->id to 32 so that it doesn't collide with any of the multicast +- * groups selected by openvswitch_mod, which uses groups 16 through 31. ++ * groups selected by openvswitch, which uses groups 16 through 31. + * Collision isn't fatal--multicast listeners should check that the family is + * the one that they want and discard others--but it wastes time and memory to + * receive unwanted messages. */ +Index: openvswitch-1.6.1/datapath/vport-netdev.c +=================================================================== +--- openvswitch-1.6.1.orig/datapath/vport-netdev.c ++++ openvswitch-1.6.1/datapath/vport-netdev.c +@@ -423,7 +423,7 @@ const struct vport_ops ovs_netdev_vport_ + * In kernels earlier than 2.6.36, Open vSwitch cannot safely coexist with the + * Linux bridge module, because there is only a single bridge hook function and + * only a single br_port member in struct net_device, so this prevents loading +- * both bridge and openvswitch_mod at the same time. ++ * both bridge and openvswitch at the same time. + */ + BRIDGE_MUTUAL_EXCLUSION; + #endif +Index: openvswitch-1.6.1/debian/dkms.conf.in +=================================================================== +--- openvswitch-1.6.1.orig/debian/dkms.conf.in ++++ openvswitch-1.6.1/debian/dkms.conf.in +@@ -1,8 +1,8 @@ + PACKAGE_NAME="openvswitch" + PACKAGE_VERSION="__VERSION__" + MAKE="./configure --with-linux='${kernel_source_dir}' && make -C datapath/linux" +-BUILT_MODULE_NAME[0]=openvswitch_mod +-BUILT_MODULE_NAME[1]=brcompat_mod ++BUILT_MODULE_NAME[0]=openvswitch ++BUILT_MODULE_NAME[1]=brcompat + BUILT_MODULE_LOCATION[0]=datapath/linux/ + BUILT_MODULE_LOCATION[1]=datapath/linux/ + DEST_MODULE_LOCATION[0]=/kernel/drivers/net/openvswitch/ +Index: openvswitch-1.6.1/utilities/ovs-ctl.8 +=================================================================== +--- openvswitch-1.6.1.orig/utilities/ovs-ctl.8 ++++ openvswitch-1.6.1/utilities/ovs-ctl.8 +@@ -282,8 +282,8 @@ from other errors that may occur when ru + . + .PP + By default the \fBload\-kmod\fR command attempts to load the +-openvswitch_mod kernel module. If the \fB\-\-brcompat\fR option is +-specified then the brcompat_mod kernel module is also loaded. ++openvswitch kernel module. If the \fB\-\-brcompat\fR option is ++specified then the brcompat kernel module is also loaded. + . + .SH "The ``enable\-protocol'' command" + . +Index: openvswitch-1.6.1/utilities/ovs-ctl.in +=================================================================== +--- openvswitch-1.6.1.orig/utilities/ovs-ctl.in ++++ openvswitch-1.6.1/utilities/ovs-ctl.in +@@ -31,14 +31,15 @@ done + ## ----- ## + + insert_openvswitch_mod_if_required () { +- # If openvswitch_mod is already loaded then we're done. +- test -e /sys/module/openvswitch_mod && return 0 ++ # If openvswitch is already loaded then we're done. ++ test -e /sys/module/openvswitch -o -e /sys/module/openvswitch_mod && \ ++ return 0 + +- # Load openvswitch_mod. If that's successful then we're done. +- action "Inserting openvswitch module" modprobe openvswitch_mod && return 0 ++ # Load openvswitch. If that's successful then we're done. ++ action "Inserting openvswitch module" modprobe openvswitch && return 0 + + # If the bridge module is loaded, then that might be blocking +- # openvswitch_mod. Try to unload it, if there are no bridges. ++ # openvswitch. Try to unload it, if there are no bridges. + test -e /sys/module/bridge || return 1 + bridges=`echo /sys/class/net/*/bridge | sed 's,/sys/class/net/,,g;s,/bridge,,g'` + if test "$bridges" != "*"; then +@@ -47,17 +48,17 @@ insert_openvswitch_mod_if_required () { + fi + action "removing bridge module" rmmod bridge || return 1 + +- # Try loading openvswitch_mod again. +- action "Inserting openvswitch module" modprobe openvswitch_mod ++ # Try loading openvswitch again. ++ action "Inserting openvswitch module" modprobe openvswitch + } + + insert_brcompat_mod_if_required () { + if test -e /sys/module/bridge; then +- log_warning_msg "bridge module is loaded, not loading brcompat_mod" ++ log_warning_msg "bridge module is loaded, not loading brcompat" + return 1 + fi +- test -e /sys/module/brcompat_mod && return 0 +- action "Inserting brcompat module" modprobe brcompat_mod ++ test -e /sys/module/brcompat -o -e /sys/module/brcompat_mod && return 0 ++ action "Inserting brcompat module" modprobe brcompat + } + + insert_mod_if_required () { +@@ -286,11 +287,16 @@ force_reload_kmod () { + action "Removing datapath: $dp" ovs-dpctl del-dp "$dp" + done + ++ # try both old and new names in case this is post upgrade + if test -e /sys/module/brcompat_mod; then + action "Removing brcompat module" rmmod brcompat_mod ++ elif test -e /sys/module/brcompat; then ++ action "Removing brcompat module" rmmod brcompat + fi + if test -e /sys/module/openvswitch_mod; then + action "Removing openvswitch module" rmmod openvswitch_mod ++ elif test -e /sys/module/openvswitch; then ++ action "Removing openvswitch module" rmmod openvswitch + fi + + start +Index: openvswitch-1.6.1/vswitchd/ovs-brcompatd.8.in +=================================================================== +--- openvswitch-1.6.1.orig/vswitchd/ovs-brcompatd.8.in ++++ openvswitch-1.6.1/vswitchd/ovs-brcompatd.8.in +@@ -36,7 +36,7 @@ to find it. + .so lib/leak-checker.man + . + .SH NOTES +-\fBovs\-brcompatd\fR requires the \fBbrcompat_mod.ko\fR kernel module to be ++\fBovs\-brcompatd\fR requires the \fBbrcompat.ko\fR kernel module to be + loaded. + .SH "SEE ALSO" + .BR ovs\-appctl (8), +Index: openvswitch-1.6.1/vswitchd/ovs-brcompatd.c +=================================================================== +--- openvswitch-1.6.1.orig/vswitchd/ovs-brcompatd.c ++++ openvswitch-1.6.1/vswitchd/ovs-brcompatd.c +@@ -456,7 +456,7 @@ handle_fdb_query_cmd(struct ofpbuf *buff + uint32_t seq; + int error; + +- /* Parse the command received from brcompat_mod. */ ++ /* Parse the command received from brcompat. */ + error = parse_command(buffer, &seq, &linux_name, NULL, &count, &skip); + if (error) { + return error; +Index: openvswitch-1.6.1/xenserver/openvswitch-xen.spec.in +=================================================================== +--- openvswitch-1.6.1.orig/xenserver/openvswitch-xen.spec.in ++++ openvswitch-1.6.1/xenserver/openvswitch-xen.spec.in +@@ -49,7 +49,7 @@ License: ASL 2.0 + Release: 1 + Source: openvswitch-%{openvswitch_version}.tar.gz + Buildroot: /tmp/openvswitch-xen-rpm +-Requires: openvswitch_mod.ko.%{module_abi_version} ++Requires: openvswitch.ko.%{module_abi_version} + + %description + Open vSwitch provides standard network bridging functions augmented with +@@ -60,7 +60,7 @@ traffic. + Summary: Open vSwitch kernel module + Group: System Environment/Kernel + License: GPLv2 +-Provides: %{name}-modules-%{kernel_flavor} = %{kernel_version}, openvswitch_mod.ko.%{module_abi_version} ++Provides: %{name}-modules-%{kernel_flavor} = %{kernel_version}, openvswitch.ko.%{module_abi_version} + Requires: kernel-%{kernel_name} = %{kernel_version} + + %description %{module_package} +@@ -454,5 +454,5 @@ exit 0 + %exclude /usr/share/openvswitch/python/ovs/db/*.py[co] + + %files %{module_package} +-/lib/modules/%{xen_version}/extra/openvswitch/openvswitch_mod.ko +-%exclude /lib/modules/%{xen_version}/extra/openvswitch/brcompat_mod.ko ++/lib/modules/%{xen_version}/extra/openvswitch/openvswitch.ko ++%exclude /lib/modules/%{xen_version}/extra/openvswitch/brcompat.ko diff --git a/openvswitch.changes b/openvswitch.changes index 58dba85..7b8dd59 100644 --- a/openvswitch.changes +++ b/openvswitch.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Jul 26 11:47:36 UTC 2012 - rhafer@suse.com + +- The kernel modules where renamed in recent kernels. Backported a + patch from the 1.7 branch to use the new kernel names when + building on openSUSE > 12.1. + ------------------------------------------------------------------- Tue Jun 26 15:09:02 UTC 2012 - on@morlock.nu diff --git a/openvswitch.spec b/openvswitch.spec index d6e231f..ed64dd0 100644 --- a/openvswitch.spec +++ b/openvswitch.spec @@ -47,6 +47,8 @@ Source5: openvswitch-controller.init #Patch0: %name-1.3.0-suse.patch # PATCH-FEATURE-UPSTREAM openvswitch-1.1.0-stp-fwd-delay.patch -- Set STP bridge forward delay Patch1: %name-1.1.0-stp-fwd-delay.patch +# PATCH-FEATURE-UPSTREAM openvswitch-openvswitch-mod-rename.patch -- Kernel Modules renamed (for 12.2 and newer) +Patch2: %name-mod-rename.patch BuildRequires: autoconf automake libtool BuildRequires: gcc BuildRequires: make @@ -208,6 +210,9 @@ Open vSwitch is a full-featured software-based Ethernet switch. %setup -q #%patch0 -p1 %patch1 -p1 +%if 0%{?build_in_kernel_kmp} +%patch2 -p1 +%endif set -- * mkdir source