On Fri, 3 May 2019 at 11:36, Aaron Conole <[email protected]> wrote:

> Gurucharan Shetty <[email protected]> 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.
>

systemd openvswitch scripts when installed, hasn't been started yet in its
history. So they do not know that any daemon has been started. So a "stop"
will not stop old daemons.


>
> > 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 <[email protected]>
> > ---
>
> 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.
>
The "restart" being done here is only to make systemd aware of old daemons.
The old rhel rpm did not restart/force-reload-kmod old daemons either.
So this just brings fedora rpm to parity with rhel rpm. There is pre-built
infrastructure that handle restart vs force-reload-kmod for rhel based
openvswitch rpms. If we respawn daemons, it will cause them to get confused.


>
> >  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
>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to