On Mon, Sep 30, 2013 at 6:47 PM, Duffie Cooley <dcoo...@nicira.com> wrote: > From: Duffie Cooley <dcoo...@nicira.com> > > This pulls some of the changes to the debian init script into the rhel init > script. Specifically this is a fix for a request to make sure that the > openvswitch status command in rhel based distros gives a useful exit > status. That was fixed in > > commit 5e0c05bc058c78a11be6747f62e6ad88e5d06b70 > debian: Fix exit status of openvswitch-switch init script "status" > command > > This patch also pulls in the load_kmod logic in > > commit 19cbf2b8a49d18eb8a8047c3b03953e6e9f0116f > debian: force-reload-kmod while package upgrading. > > to enable users of rhel based distros to have the same > functionality. > > > Signed-off-by: Duffie Cooley <dcoo...@nicira.com> > --- > rhel/etc_init.d_openvswitch | 56 > ++++++++++++++++++++++++++++++++++++++++++--- > 1 file changed, 53 insertions(+), 3 deletions(-) > > diff --git a/rhel/etc_init.d_openvswitch b/rhel/etc_init.d_openvswitch > index 7e64132..e02174d 100755 > --- a/rhel/etc_init.d_openvswitch > +++ b/rhel/etc_init.d_openvswitch > @@ -1,6 +1,6 @@ > #!/bin/sh > # > -# openvswitch > +# Copyright (C) 2013 Nicira, Inc. > # > # chkconfig: 2345 09 91 > # description: Manage Open vSwitch kernel modules and user-space daemons > @@ -30,7 +30,29 @@ > . /usr/share/openvswitch/scripts/ovs-lib || exit 1 > test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch > > +load_kmod () { > + ovs_ctl load-kmod || exit $? > +} > + > start () { > + if ovs_ctl load-kmod; then > + : > + else > + echo "Module has probably not been built for this kernel." > + fi We will try to load the kernel module inside the 'ovs-ctl start'. But I see how this error message is more clear. I wonder whether a 'load-kmod' command will also be helpful in the case statements at the end of the file. > set ovs_ctl ${1-start} > set "$@" --system-id=random > if test X"$FORCE_COREFILES" != X; then > @@ -46,7 +68,7 @@ start () { > set "$@" --mlockall="$VSWITCHD_MLOCKALL" > fi > set "$@" $OVS_CTL_OPTS > - "$@" > + "$@" || exit $? > > touch /var/lock/subsys/openvswitch > } > @@ -57,8 +79,35 @@ stop () { > } > > restart () { > - if [ "$1" = "--save-flows=yes" ]; then > + # OVS_FORCE_RELOAD_KMOD can be set by package postinst script. > + if [ "$1" = "--save-flows=yes" ] || \ > + [ "${OVS_FORCE_RELOAD_KMOD}" = "no" ]; then > start restart > + elif [ "${OVS_FORCE_RELOAD_KMOD}" = "yes" ]; then > + depmod -a > + > + if [ -e /sys/module/openvswitch ]; then > + LOADED_SRCVERSION=`cat /sys/module/openvswitch/srcversion` > + LOADED_VERSION=`cat /sys/module/openvswitch/version` > + elif [ -e /sys/module/openvswitch_mod ]; then > + LOADED_SRCVERSION=`cat /sys/module/openvswitch_mod/srcversion` > + LOADED_VERSION=`cat /sys/module/openvswitch_mod/version` > + fi > + SRCVERSION=`modinfo -F srcversion openvswitch 2>/dev/null` > + VERSION=`modinfo -F version openvswitch 2>/dev/null` > + > + ovs_ctl_log "Package upgrading:\n"\ > + "Loaded version: ${LOADED_VERSION} > ${LOADED_SRCVERSION}.\n"\ > + "Version on disk: ${VERSION} ${SRCVERSION}." > + > + # If the kernel module was previously loaded and it is > different than > + # the kernel module on disk, then do a 'force-reload-kmod'. > + if [ -n "${LOADED_SRCVERSION}" ] && [ -n "${SRCVERSION}" ] && \ > + [ "${SRCVERSION}" != "${LOADED_SRCVERSION}" ]; then > + start force-reload-kmod > + else > + start restart > + fi Duffie, The above logic is used during package upgrading in debian based systems. After a package is upgraded there, packages automatically do a 'restart' and that would not replace the kernel module. To replace the kernel module, one would previously have to run the 'force-reload-kmod' command again manually resulting in 2 restarts which can be considered expensive. With the above logic, we solved that problem for debian based systems.
In case of RHEL, there is no automatic restart after a package upgrade. The user has a choice either to do a 'restart' or 'force-reload-kmod'. So I am not sure the second part of the above patch actually helps RHEL environment. > else > stop > start > @@ -81,6 +130,7 @@ case $1 in > ;; > status) > ovs_ctl status > + exit $? > ;; > version) > ovs_ctl version > -- > 1.8.1.2 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev