diff mbox series

[ovs-dev,v2] rhel: Add 4.12 kernel support in ovs-kmod-manage.sh

Message ID 1558381150-19807-1-git-send-email-yihung.wei@gmail.com
State Accepted
Commit 402efbe4e176026f4e49988cfb487e6dec3f616c
Headers show
Series [ovs-dev,v2] rhel: Add 4.12 kernel support in ovs-kmod-manage.sh | expand

Commit Message

Yi-Hung Wei May 20, 2019, 7:39 p.m. UTC
This patch extends c3570519ecaf ("rhel: add 4.4 kernel in kmod build
with mulitple versions, fedora") that updates ovs-kmod-manage.sh to
support SLES 12 SP4 kernel (4.12.x, x>=14).

For some distros, openvswitch-kmod rpm package may contain multiple
ovs kernel modules built against different kernels to deal with kernel
ABI changes and kernel module compatibility issues.  For rpm that
packages with multiple kernel modules, ovs-kmod-manage.sh is invoked
during the rpm post installation stage to 1) select the proper kernel
module to be used; 2) create symbolic links to the proper kernel module
in the weak-updates directory if needed.

For SLES 12 SP4, since the weak-modules utility is not available, even
though there is no ovs related kernel ABI changes for its
currently 5 available kernels from 4.12.14-94.41.1 to 4.12.14-95.16.1,
we still want to invoke ovs-kmod-manage.sh to create weak-updates
symbolic links if the kernel that build the rpm package is different
from the installed kernel.

Notice that ovs-kmod-manage.sh assumes the oldest compatible kernel
is used to build the kernel module rpm. For example, on SLES 12 SP4
it would be,

$ rpmbuild -bb -D 'kversion 4.12.14-94.41-default' \
    rhel/openvswitch-kmod-fedora.spec

Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
---
v1->v2:
* Address feedback from Guru.  That is since SLES does not have
weak-modules, instead of checking the version number of SLES kernels
on post-inst section, greps "suse" on /etc/os-relese and invokes
ovs-kmod-manage.sh.

---
 rhel/openvswitch-kmod-fedora.spec.in               | 13 ++++++-------
 ...sr_share_openvswitch_scripts_ovs-kmod-manage.sh | 22 ++++++++++++++++++----
 2 files changed, 24 insertions(+), 11 deletions(-)

Comments

Gurucharan Shetty May 20, 2019, 7:53 p.m. UTC | #1
On Mon, 20 May 2019 at 12:48, Yi-Hung Wei <yihung.wei@gmail.com> wrote:

> This patch extends c3570519ecaf ("rhel: add 4.4 kernel in kmod build
> with mulitple versions, fedora") that updates ovs-kmod-manage.sh to
> support SLES 12 SP4 kernel (4.12.x, x>=14).
>
> For some distros, openvswitch-kmod rpm package may contain multiple
> ovs kernel modules built against different kernels to deal with kernel
> ABI changes and kernel module compatibility issues.  For rpm that
> packages with multiple kernel modules, ovs-kmod-manage.sh is invoked
> during the rpm post installation stage to 1) select the proper kernel
> module to be used; 2) create symbolic links to the proper kernel module
> in the weak-updates directory if needed.
>
> For SLES 12 SP4, since the weak-modules utility is not available, even
> though there is no ovs related kernel ABI changes for its
> currently 5 available kernels from 4.12.14-94.41.1 to 4.12.14-95.16.1,
> we still want to invoke ovs-kmod-manage.sh to create weak-updates
> symbolic links if the kernel that build the rpm package is different
> from the installed kernel.
>
> Notice that ovs-kmod-manage.sh assumes the oldest compatible kernel
> is used to build the kernel module rpm. For example, on SLES 12 SP4
> it would be,
>
> $ rpmbuild -bb -D 'kversion 4.12.14-94.41-default' \
>     rhel/openvswitch-kmod-fedora.spec
>
> Signed-off-by: Yi-Hung Wei <yihung.wei@gmail.com>
>
Thanks. Applied to master.



> ---
> v1->v2:
> * Address feedback from Guru.  That is since SLES does not have
> weak-modules, instead of checking the version number of SLES kernels
> on post-inst section, greps "suse" on /etc/os-relese and invokes
> ovs-kmod-manage.sh.
>
> ---
>  rhel/openvswitch-kmod-fedora.spec.in               | 13 ++++++-------
>  ...sr_share_openvswitch_scripts_ovs-kmod-manage.sh | 22
> ++++++++++++++++++----
>  2 files changed, 24 insertions(+), 11 deletions(-)
>
> diff --git a/rhel/openvswitch-kmod-fedora.spec.in b/rhel/
> openvswitch-kmod-fedora.spec.in
> index 9a4c48910acb..dfa6f237f82d 100644
> --- a/rhel/openvswitch-kmod-fedora.spec.in
> +++ b/rhel/openvswitch-kmod-fedora.spec.in
> @@ -85,19 +85,18 @@ IFS='.\|-' read mainline_major mainline_minor
> mainline_patch major_rev \
>      minor_rev _extra <<<"${current_kernel}"
>  # echo mainline_major=$mainline_major mainline_minor=$mainline_minor \
>  # mainline_patch=$mainline_patch major_rev=$major_rev minor_rev=$minor_rev
> -if [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ]; then
> +if grep -qs "suse" /etc/os-release; then
> +    # For SLES or OpenSUSE
> +    if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
> +        %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
> +    fi
> +elif [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ]; then
>      if [ "$major_rev" = "327" ] || [ "$major_rev" = "693" ]; then
>          # For RHEL 7.2 and 7.4
>          if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ];
> then
>              %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
>          fi
>      fi
> -elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "4" ] && \
> -     [ "$mainline_patch" -ge "73" ]; then
> -     # For SLES 12 SP3
> -     if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
> -         %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
> -     fi
>  else
>      # Ensure that modprobe will find our modules.
>      for k in $(cd /lib/modules && /bin/ls); do
> diff --git a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
> b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
> index b5c4615f20b5..9c9f230b70d7 100644
> --- a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
> +++ b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
> @@ -14,10 +14,13 @@
>  # See the License for the specific language governing permissions and
>  # limitations under the License.
>
> -# This version of the script is intended to be used on kernel version
> 3.10.0
> -# major revision 327 (RHEL 7.2) and 693 (RHEL 7.4), and kernel version
> 4.4.x,
> -# x >= 73 (SLES 12 SP3) only. It is packaged in the openvswitch kmod RPM
> -# and run in the post-install scripts.
> +# This script is intended to be used on the following kernels.
> +#   - 3.10.0 major revision 327 (RHEL 7.2)
> +#   - 3.10.0 major revision 693 (RHEL 7.4)
> +#   - 4.4.x,  x >= 73           (SLES 12 SP3)
> +#   - 4.12.x, x >= 14           (SLES 12 SP4).
> +# It is packaged in the openvswitch kmod RPM and run in the post-install
> +# scripts.
>  #
>  # For kernel 3.10.0-693,
>  # due to some backward incompatible changes introduced in minor revision
> 17.1,
> @@ -34,6 +37,10 @@
>  # 4.4.73 to 4.4.114; modules built against 4.4.120 can run on systems from
>  # 4.4.120 onwards.
>  #
> +# For kernel 4.12.x, x>=14,
> +# kernel modules built with the oldest compatible kernel 4.12.14-94.41.1
> can
> +# run on all versions onwards.
> +#
>  # This script checks the current running kernel version, and update
> symlinks
>  # for the openvswitch kernel modules in the appropriate kernel directory,
>  # provided the kmod RPM has installed kernel modules files built from both
> @@ -80,6 +87,13 @@ elif [ "$mainline_major" = "4" ] && [ "$mainline_minor"
> = "4" ]; then
>          ver_offset=2
>          installed_ver="$mainline_patch"
>      fi
> +elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "12" ]; then
> +    if [ "$mainline_patch" -ge "14" ]; then
> +#        echo "sles12sp4"
> +        comp_ver=14
> +        ver_offset=2
> +        installed_ver="$mainline_patch"
> +    fi
>  fi
>
>  if [ X"$ver_offset" = X ]; then
> --
> 2.7.4
>
>
diff mbox series

Patch

diff --git a/rhel/openvswitch-kmod-fedora.spec.in b/rhel/openvswitch-kmod-fedora.spec.in
index 9a4c48910acb..dfa6f237f82d 100644
--- a/rhel/openvswitch-kmod-fedora.spec.in
+++ b/rhel/openvswitch-kmod-fedora.spec.in
@@ -85,19 +85,18 @@  IFS='.\|-' read mainline_major mainline_minor mainline_patch major_rev \
     minor_rev _extra <<<"${current_kernel}"
 # echo mainline_major=$mainline_major mainline_minor=$mainline_minor \
 # mainline_patch=$mainline_patch major_rev=$major_rev minor_rev=$minor_rev
-if [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ]; then
+if grep -qs "suse" /etc/os-release; then
+    # For SLES or OpenSUSE
+    if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
+        %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
+    fi
+elif [ "$mainline_major" = "3" ] && [ "$mainline_minor" = "10" ]; then
     if [ "$major_rev" = "327" ] || [ "$major_rev" = "693" ]; then
         # For RHEL 7.2 and 7.4
         if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
             %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
         fi
     fi
-elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "4" ] && \
-     [ "$mainline_patch" -ge "73" ]; then
-     # For SLES 12 SP3
-     if [ -x "%{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh" ]; then
-         %{_datadir}/openvswitch/scripts/ovs-kmod-manage.sh
-     fi
 else
     # Ensure that modprobe will find our modules.
     for k in $(cd /lib/modules && /bin/ls); do
diff --git a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
index b5c4615f20b5..9c9f230b70d7 100644
--- a/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
+++ b/rhel/usr_share_openvswitch_scripts_ovs-kmod-manage.sh
@@ -14,10 +14,13 @@ 
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# This version of the script is intended to be used on kernel version 3.10.0
-# major revision 327 (RHEL 7.2) and 693 (RHEL 7.4), and kernel version 4.4.x,
-# x >= 73 (SLES 12 SP3) only. It is packaged in the openvswitch kmod RPM
-# and run in the post-install scripts.
+# This script is intended to be used on the following kernels.
+#   - 3.10.0 major revision 327 (RHEL 7.2)
+#   - 3.10.0 major revision 693 (RHEL 7.4)
+#   - 4.4.x,  x >= 73           (SLES 12 SP3)
+#   - 4.12.x, x >= 14           (SLES 12 SP4).
+# It is packaged in the openvswitch kmod RPM and run in the post-install
+# scripts.
 #
 # For kernel 3.10.0-693,
 # due to some backward incompatible changes introduced in minor revision 17.1,
@@ -34,6 +37,10 @@ 
 # 4.4.73 to 4.4.114; modules built against 4.4.120 can run on systems from
 # 4.4.120 onwards.
 #
+# For kernel 4.12.x, x>=14,
+# kernel modules built with the oldest compatible kernel 4.12.14-94.41.1 can
+# run on all versions onwards.
+#
 # This script checks the current running kernel version, and update symlinks
 # for the openvswitch kernel modules in the appropriate kernel directory,
 # provided the kmod RPM has installed kernel modules files built from both
@@ -80,6 +87,13 @@  elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "4" ]; then
         ver_offset=2
         installed_ver="$mainline_patch"
     fi
+elif [ "$mainline_major" = "4" ] && [ "$mainline_minor" = "12" ]; then
+    if [ "$mainline_patch" -ge "14" ]; then
+#        echo "sles12sp4"
+        comp_ver=14
+        ver_offset=2
+        installed_ver="$mainline_patch"
+    fi
 fi
 
 if [ X"$ver_offset" = X ]; then