[ovs-dev] [PATCH 2/2] fedora: Handle upgrades from rhel package.

Aaron Conole aconole at redhat.com
Fri May 3 18:36:29 UTC 2019


Gurucharan Shetty <guru at ovn.org> writes:

> Currently we have rhel/openvswitch.spec.in that provides
> sysv scripts. The fedora package provides systemd scripts.
> If one upgrades openvswitch package from sysv to systemd,
> you will end up in a situation where old OVS daemons are
> running, but systemd does not know about it.  One "restart"
> is needed for systemd to see the old daemons. Another "restart"
> or "force-reload-kmod" is needed to actually use the new
> daemons.

Is this true?  I thought the restart would actually run the restart
action and that would spawn new instances of the daemons.  It seems like
a strange behavior.

> This commit, just takes care of the first restart. The "real"
> restart/force-reload-kmod will still have to be done outside
> the package installation.
>
> Signed-off-by: Gurucharan Shetty <guru at ovn.org>
> ---

I'm still not clear on the reasoning to only do the 'restart' on
upgrade from the sysv style.  If we're going through the trouble to
auto-enable it seems confusing that the service gets enabled but not
started, but only sometimes.  Maybe it's best that if this autoenable
flag is set, the daemons are also spawned.

>  rhel/openvswitch-fedora.spec.in | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
>
> diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
> index e8165f9..d41d11c 100644
> --- a/rhel/openvswitch-fedora.spec.in
> +++ b/rhel/openvswitch-fedora.spec.in
> @@ -364,6 +364,12 @@ getent passwd openvswitch >/dev/null || \
>      usermod -a -G hugetlbfs openvswitch
>  %endif
>  %endif
> +
> +%if %{with autoenable}
> +    if [ -x "/etc/init.d/openvswitch" ]; then
> +        touch %{_tmppath}/ovs-upgrade-from-sysv
> +    fi
> +%endif
>  exit 0
>  
>  %post
> @@ -397,6 +403,14 @@ fi
>  %if %{with autoenable}
>      systemctl daemon-reload
>      systemctl enable openvswitch
> +    # Handle upgrades to this package from the OVS repo's rhel packages.
> +    # One "restart" is needed for newer systemd files to see the old running
> +    # daemons. Another "restart" (outside the package postinst script) is
> +    # needed to actually run new daemons.
> +    if [ -e "%{_tmppath}/ovs-upgrade-from-sysv" ]; then
> +        systemctl restart openvswitch
> +        rm "%{_tmppath}/ovs-upgrade-from-sysv"
> +    fi
>  %endif
>  
>  %post selinux-policy


More information about the dev mailing list