diff mbox series

[ovs-dev] rhel: Ensure proper OVS kernel modules load after upgrade

Message ID 1515883000-14032-1-git-send-email-gvrose8192@gmail.com
State Superseded
Headers show
Series [ovs-dev] rhel: Ensure proper OVS kernel modules load after upgrade | expand

Commit Message

Gregory Rose Jan. 13, 2018, 10:36 p.m. UTC
Add post install and post un-install scripts to make sure that the
openvswitch kernel modules are correctly written with the weak-modules
utility. This ensures that after an upgrade to a newer kernel the
correct openvswitch kernel modules from a previous installation will
be found by the depmod search path.

Suggested-by: Flavio Leitner <fbl@sysclose.org>
Signed-off-by: Greg Rose <gvrose8192@gmail.com>
---
 rhel/openvswitch.spec.in | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

Comments

Flavio Leitner Jan. 15, 2018, 10:07 p.m. UTC | #1
On Sat, Jan 13, 2018 at 02:36:40PM -0800, Greg Rose wrote:
> Add post install and post un-install scripts to make sure that the
> openvswitch kernel modules are correctly written with the weak-modules
> utility. This ensures that after an upgrade to a newer kernel the
> correct openvswitch kernel modules from a previous installation will
> be found by the depmod search path.

Hi Greg,

I think you're patching the wrong spec.  The RPM %post and %postun sections
are needed only when installing the kmod package and they have a separate
specs (which are rhel/*-kmod-*.spec.in.) since they generate a separate
packages.

Since you will be patching the spec generating the package and not a
sub-package, you don't need to add its name after %post or %postun.

Example:
diff --git a/rhel/openvswitch-kmod-fedora.spec.in b/rhel/openvswitch-kmod-fedora.spec.in
index 93adb0330..8ab82348e 100644
--- a/rhel/openvswitch-kmod-fedora.spec.in
+++ b/rhel/openvswitch-kmod-fedora.spec.in
@@ -56,8 +56,29 @@ done
 rm -rf $RPM_BUILD_ROOT
 
 %post
-# Ensure that modprobe will find our modules.
-depmod %{kernel}
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ -x "/sbin/weak-modules" ]; then
+   for m in openvswitch vport-gre vport-stt vport-geneve \
+           vport-lisp vport-vxlan; do
+       echo "/lib/modules/%{kernel}/extra/$m.ko"
+   done | /sbin/weak-modules --add-modules
+fi
+
+
+%postun
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ "$1" = 0 ]; then  # Erase, not upgrade
+   if [ -x "/sbin/weak-modules" ]; then
+       for m in openvswitch vport-gre vport-stt vport-geneve \
+                vport-lisp vport-vxlan; do
+       echo "/lib/modules/%{kernel}/extra/$m.ko"
+   done | /sbin/weak-modules --remove-modules
+   fi
+fi
 
 %files
 %defattr(0644,root,root)

fbl

> 
> Suggested-by: Flavio Leitner <fbl@sysclose.org>
> Signed-off-by: Greg Rose <gvrose8192@gmail.com>
> ---
>  rhel/openvswitch.spec.in | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in
> index e510d35..44cd611 100644
> --- a/rhel/openvswitch.spec.in
> +++ b/rhel/openvswitch.spec.in
> @@ -165,6 +165,17 @@ else
>      done
>  fi
>  
> +%post kmod-%{kverrel}
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ -x "/sbin/weak-modules" ]; then
> +    for m in openvswitch vport-gre vport-stt vport-geneve \
> +             vport-lisp vport-vxlan; do
> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
> +    done | /sbin/weak-modules --add-modules
> +fi
> +
>  # Ensure all required services are set to run
>  /sbin/chkconfig --add openvswitch
>  /sbin/chkconfig openvswitch on
> @@ -185,6 +196,19 @@ if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
>      rm -f /etc/openvswitch/vswitchd.cacert
>  fi
>  
> +%postun kmod-%{kverrel}
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ "$1" = 0 ]; then  # Erase, not upgrade
> +    if [ -x "/sbin/weak-modules" ]; then
> +        for m in openvswitch vport-gre vport-stt vport-geneve \
> +                 vport-lisp vport-vxlan; do
> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
> +    done | /sbin/weak-modules --remove-modules
> +    fi
> +fi
> +
>  %postun selinux-policy
>  if [ $1 -eq 0 ] ; then
>    /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :
> -- 
> 1.8.3.1
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Gregory Rose Jan. 15, 2018, 10:22 p.m. UTC | #2
On 1/15/2018 2:07 PM, Flavio Leitner wrote:
> On Sat, Jan 13, 2018 at 02:36:40PM -0800, Greg Rose wrote:
>> Add post install and post un-install scripts to make sure that the
>> openvswitch kernel modules are correctly written with the weak-modules
>> utility. This ensures that after an upgrade to a newer kernel the
>> correct openvswitch kernel modules from a previous installation will
>> be found by the depmod search path.
> Hi Greg,
>
> I think you're patching the wrong spec.  The RPM %post and %postun sections
> are needed only when installing the kmod package and they have a separate
> specs (which are rhel/*-kmod-*.spec.in.) since they generate a separate
> packages.
>
> Since you will be patching the spec generating the package and not a
> sub-package, you don't need to add its name after %post or %postun.

I did wonder about that but my ignorance of rpm spec files is showing.  :)

OK, I'll rework the patch and send V2.

Your help is greatly appreciated Flavio.  Thanks!

- Greg

>
> Example:
> diff --git a/rhel/openvswitch-kmod-fedora.spec.in b/rhel/openvswitch-kmod-fedora.spec.in
> index 93adb0330..8ab82348e 100644
> --- a/rhel/openvswitch-kmod-fedora.spec.in
> +++ b/rhel/openvswitch-kmod-fedora.spec.in
> @@ -56,8 +56,29 @@ done
>   rm -rf $RPM_BUILD_ROOT
>   
>   %post
> -# Ensure that modprobe will find our modules.
> -depmod %{kernel}
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ -x "/sbin/weak-modules" ]; then
> +   for m in openvswitch vport-gre vport-stt vport-geneve \
> +           vport-lisp vport-vxlan; do
> +       echo "/lib/modules/%{kernel}/extra/$m.ko"
> +   done | /sbin/weak-modules --add-modules
> +fi
> +
> +
> +%postun
> +for k in $(cd /lib/modules && /bin/ls); do
> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
> +done
> +if [ "$1" = 0 ]; then  # Erase, not upgrade
> +   if [ -x "/sbin/weak-modules" ]; then
> +       for m in openvswitch vport-gre vport-stt vport-geneve \
> +                vport-lisp vport-vxlan; do
> +       echo "/lib/modules/%{kernel}/extra/$m.ko"
> +   done | /sbin/weak-modules --remove-modules
> +   fi
> +fi
>   
>   %files
>   %defattr(0644,root,root)
>
> fbl
>
>> Suggested-by: Flavio Leitner <fbl@sysclose.org>
>> Signed-off-by: Greg Rose <gvrose8192@gmail.com>
>> ---
>>   rhel/openvswitch.spec.in | 24 ++++++++++++++++++++++++
>>   1 file changed, 24 insertions(+)
>>
>> diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in
>> index e510d35..44cd611 100644
>> --- a/rhel/openvswitch.spec.in
>> +++ b/rhel/openvswitch.spec.in
>> @@ -165,6 +165,17 @@ else
>>       done
>>   fi
>>   
>> +%post kmod-%{kverrel}
>> +for k in $(cd /lib/modules && /bin/ls); do
>> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
>> +done
>> +if [ -x "/sbin/weak-modules" ]; then
>> +    for m in openvswitch vport-gre vport-stt vport-geneve \
>> +             vport-lisp vport-vxlan; do
>> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
>> +    done | /sbin/weak-modules --add-modules
>> +fi
>> +
>>   # Ensure all required services are set to run
>>   /sbin/chkconfig --add openvswitch
>>   /sbin/chkconfig openvswitch on
>> @@ -185,6 +196,19 @@ if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
>>       rm -f /etc/openvswitch/vswitchd.cacert
>>   fi
>>   
>> +%postun kmod-%{kverrel}
>> +for k in $(cd /lib/modules && /bin/ls); do
>> +    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
>> +done
>> +if [ "$1" = 0 ]; then  # Erase, not upgrade
>> +    if [ -x "/sbin/weak-modules" ]; then
>> +        for m in openvswitch vport-gre vport-stt vport-geneve \
>> +                 vport-lisp vport-vxlan; do
>> +        echo "/lib/modules/%{kernel}/extra/$m.ko"
>> +    done | /sbin/weak-modules --remove-modules
>> +    fi
>> +fi
>> +
>>   %postun selinux-policy
>>   if [ $1 -eq 0 ] ; then
>>     /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :
>> -- 
>> 1.8.3.1
>>
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff mbox series

Patch

diff --git a/rhel/openvswitch.spec.in b/rhel/openvswitch.spec.in
index e510d35..44cd611 100644
--- a/rhel/openvswitch.spec.in
+++ b/rhel/openvswitch.spec.in
@@ -165,6 +165,17 @@  else
     done
 fi
 
+%post kmod-%{kverrel}
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ -x "/sbin/weak-modules" ]; then
+    for m in openvswitch vport-gre vport-stt vport-geneve \
+             vport-lisp vport-vxlan; do
+        echo "/lib/modules/%{kernel}/extra/$m.ko"
+    done | /sbin/weak-modules --add-modules
+fi
+
 # Ensure all required services are set to run
 /sbin/chkconfig --add openvswitch
 /sbin/chkconfig openvswitch on
@@ -185,6 +196,19 @@  if [ "$1" = "0" ]; then     # $1 = 0 for uninstall
     rm -f /etc/openvswitch/vswitchd.cacert
 fi
 
+%postun kmod-%{kverrel}
+for k in $(cd /lib/modules && /bin/ls); do
+    [ -d "/lib/modules/$k/kernel/" ] && depmod -a "$k"
+done
+if [ "$1" = 0 ]; then  # Erase, not upgrade
+    if [ -x "/sbin/weak-modules" ]; then
+        for m in openvswitch vport-gre vport-stt vport-geneve \
+                 vport-lisp vport-vxlan; do
+        echo "/lib/modules/%{kernel}/extra/$m.ko"
+    done | /sbin/weak-modules --remove-modules
+    fi
+fi
+
 %postun selinux-policy
 if [ $1 -eq 0 ] ; then
   /usr/sbin/semodule -r openvswitch-custom &> /dev/null || :