On Thu, Mar 1, 2012 at 9:28 PM, Chris Wright <chr...@sous-sol.org> wrote:

> This is just an RFC, partly because it ignores datapath/ so you could
> build a module that the runtime can't install.  Now that the ovs datapath
> is upstream and named simply openvswitch, tools like ovs-ctl fail to
> function w/ the native datapath module.  This is a simple example using
> an environment variable of making the name configurable with:
>
>  ./configure OVSKMOD=openvswitch
>
> Thoughts?
>
> thanks,
> -chris
> ---
>  Makefile.am          |    1 +
>  configure.ac         |    6 ++++++
>  utilities/ovs-ctl.in |   18 +++++++++---------
>  3 files changed, 16 insertions(+), 9 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index 46de7fb..dc4a609 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -101,6 +101,7 @@ SUFFIXES += .in
>                 -e 's,[@]RUNDIR[@],$(RUNDIR),g' \
>                 -e 's,[@]VERSION[@],$(VERSION),g' \
>                 -e 's,[@]BUILDNR[@],$(BUILDNR),g' \
> +                -e 's,[@]OVSKMOD[@],$(OVSKMOD),g' \
>                 -e 's,[@]localstatedir[@],$(localstatedir),g' \
>                 -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
>                 -e 's,[@]sysconfdir[@],$(sysconfdir),g' \
> diff --git a/configure.ac b/configure.ac
> index a1c1fb4..7e4fdb7 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -93,6 +93,12 @@ AC_ARG_VAR(KARCH, [Kernel Architecture String])
>  AC_SUBST(KARCH)
>  OVS_CHECK_LINUX
>
> +AC_ARG_VAR(OVSKMOD, [Open vSwitch kernel module name (default
> openvswitch_mod)])
> +if test "X$OVSKMOD" = "X"; then
> +    OVSKMOD=openvswitch_mod
> +fi
> +AC_SUBST(OVSKMOD)
> +
>  AC_CONFIG_FILES([Makefile
>  datapath/Makefile
>  datapath/linux/Kbuild
> diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
> index 9bdb3df..07b9f32 100755
> --- a/utilities/ovs-ctl.in
> +++ b/utilities/ovs-ctl.in
> @@ -31,14 +31,14 @@ done
>  ## ----- ##
>
>  insert_openvswitch_mod_if_required () {
> -    # If openvswitch_mod is already loaded then we're done.
> -    test -e /sys/module/openvswitch_mod && return 0
> +    # If @OVSKMOD@ is already loaded then we're done.
> +    test -e /sys/module/@OVSKMOD@ && return 0
>
>From upgrade perspective: If the new user-space would want to use
openvswitch.ko, but the old one was using openvswitch_mod.ko,
then could we somehow make this part a little bit more intelligent,
so that upgrade would be seamless and the user would not have to
manually unload the old kernel module (see force-reload-kmod command)?

Although, I guess a system reboot would be anyway necessary if user
upgraded from a linux kernel that does not have openvswitch module and
the one that has. So it would be up to user to do both upgrades in one
shot.


> -    # Load openvswitch_mod.  If that's successful then we're done.
> -    action "Inserting openvswitch module" modprobe openvswitch_mod &&
> return 0
> +    # Load @OVSKMOD@.  If that's successful then we're done.
> +    action "Inserting openvswitch module" modprobe @OVSKMOD@ && return 0
>
>     # If the bridge module is loaded, then that might be blocking
> -    # openvswitch_mod.  Try to unload it, if there are no bridges.
> +    # @OVSKMOD@.  Try to unload it, if there are no bridges.
>     test -e /sys/module/bridge || return 1
>     bridges=`echo /sys/class/net/*/bridge | sed
> 's,/sys/class/net/,,g;s,/bridge,,g'`
>     if test "$bridges" != "*"; then
> @@ -47,8 +47,8 @@ insert_openvswitch_mod_if_required () {
>     fi
>     action "removing bridge module" rmmod bridge || return 1
>
> -    # Try loading openvswitch_mod again.
> -    action "Inserting openvswitch module" modprobe openvswitch_mod
> +    # Try loading @OVSKMOD@ again.
> +    action "Inserting openvswitch module" modprobe @OVSKMOD@
>  }
>
>  insert_brcompat_mod_if_required () {
> @@ -289,8 +289,8 @@ force_reload_kmod () {
>     if test -e /sys/module/brcompat_mod; then
>         action "Removing brcompat module" rmmod brcompat_mod
>     fi
> -    if test -e /sys/module/openvswitch_mod; then
> -        action "Removing openvswitch module" rmmod openvswitch_mod
> +    if test -e /sys/module/@OVSKMOD@; then
> +        action "Removing openvswitch module" rmmod @OVSKMOD@
>     fi
>
>     start
> --
> 1.7.7.6
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to