Looks good.  Thanks.

--Justin


On Jun 14, 2012, at 5:12 PM, Ben Pfaff wrote:

> This is occasionally useful for debugging.
> 
> Signed-off-by: Ben Pfaff <[email protected]>
> ---
> v1->v2: Use new dedicated options for configuring wrapper scripts,
> instead of overloading the "priority" options.  Suggested by Justin.
> 
> utilities/ovs-ctl.8  |   25 +++++++++++++++++++++++++
> utilities/ovs-ctl.in |   16 +++++++++++++---
> utilities/ovs-lib.in |   27 ++++++++++++++++++++++++++-
> 3 files changed, 64 insertions(+), 4 deletions(-)
> 
> diff --git a/utilities/ovs-ctl.8 b/utilities/ovs-ctl.8
> index 6a1315f..1a9ee2a 100644
> --- a/utilities/ovs-ctl.8
> +++ b/utilities/ovs-ctl.8
> @@ -183,6 +183,31 @@ suppresses that behavior.
> Sets the \fBnice\fR(1) level used for each daemon.  All of them
> default to \fB\-10\fR.
> .
> +.IP "\fB\-\-ovsdb\-server\-wrapper=\fIwrapper\fR"
> +.IQ "\fB\-\-ovs\-vswitchd\-wrapper=\fIwrapper\fR"
> +.IQ "\fB\-\-ovs\-brcompatd\-wrapper=\fIwrapper\fR"
> +.
> +Configures the specified daemon to run under \fIwrapper\fR, which is
> +one of the following:
> +.
> +.RS
> +.IP "\fBvalgrind\fR"
> +Run the daemon under \fBvalgrind\fR(1), if it is installed, logging to
> +\fIdaemon\fB.valgrind.log.\fIpid\fR in the log directory.
> +.
> +.IP "\fBstrace\fR"
> +Run the daemon under \fBstrace\fR(1), if it is installed, logging to
> +\fIdaemon\fB.strace.log.\fIpid\fR in the log directory.
> +.RE
> +.
> +.IP
> +By default, no wrapper is used.
> +.
> +.IP
> +Wrappers greatly slow daemon operations so they should not be used in
> +production.  They also produce voluminous logs that can quickly fill
> +small disk partitions.
> +.
> .PP
> The following options control file locations.  They should only be
> used if the default locations cannot be used.  See \fBFILES\fR, below,
> diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in
> index dfd6fa8..552cef3 100755
> --- a/utilities/ovs-ctl.in
> +++ b/utilities/ovs-ctl.in
> @@ -188,7 +188,8 @@ start () {
>       set "$@" --private-key=db:SSL,private_key
>       set "$@" --certificate=db:SSL,certificate
>       set "$@" --bootstrap-ca-cert=db:SSL,ca_cert
> -     start_daemon "$OVSDB_SERVER_PRIORITY" "$@" || return 1
> +     start_daemon "$OVSDB_SERVER_PRIORITY" "$OVSDB_SERVER_WRAPPER" "$@" \
> +            || return 1
> 
>       # Initialize database settings.
>       ovs_vsctl -- init -- set Open_vSwitch . db-version="$schemaver" \
> @@ -215,7 +216,7 @@ start () {
>       if test X"$MLOCKALL" != Xno; then
>           set "$@" --mlockall
>       fi
> -     start_daemon "$OVS_VSWITCHD_PRIORITY" "$@"
> +     start_daemon "$OVS_VSWITCHD_PRIORITY" "$OVS_VSWITCHD_WRAPPER" "$@"
>     fi
> 
>     if daemon_is_running ovs-brcompatd; then
> @@ -223,7 +224,7 @@ start () {
>     elif test X"$BRCOMPAT" = Xyes; then
>         set ovs-brcompatd
>       set "$@" -vconsole:emer -vsyslog:err -vfile:info
> -     start_daemon "$OVS_BRCOMPATD_PRIORITY" "$@"
> +     start_daemon "$OVS_BRCOMPATD_PRIORITY" "$OVS_BRCOMPATD_WRAPPER" "$@"
>     fi
> }
> 
> @@ -377,6 +378,9 @@ set_defaults () {
>     OVSDB_SERVER_PRIORITY=-10
>     OVS_VSWITCHD_PRIORITY=-10
>     OVS_BRCOMPATD_PRIORITY=-10
> +    OVSDB_SERVER_WRAPPER=
> +    OVS_VSWITCHD_WRAPPER=
> +    OVS_BRCOMPATD_WRAPPER=
> 
>     DB_FILE=$etcdir/conf.db
>     DB_SOCK=$rundir/db.sock
> @@ -442,6 +446,12 @@ Less important options for "start" and 
> "force-reload-kmod":
>   --ovs-vswitchd-priority=NICE   set ovs-vswitchd's niceness (default: 
> $OVS_VSWITCHD_PRIORITY)
>   --ovs-brcompatd-priority=NICE  set ovs-brcompatd's niceness (default: 
> $OVS_BRCOMPATD_PRIORITY)
> 
> +Debugging options for "start" and "force-reload-kmod":
> +  --ovsdb-server-wrapper=WRAPPER
> +  --ovs-vswitchd-wrapper=WRAPPER
> +  --ovs-vswitchd-wrapper=WRAPPER
> +     run specified daemon under WRAPPER (either 'valgrind' or 'strace')
> +
> Options for "start", "force-reload-kmod", "load-kmod", "status", and 
> "version":
>   --brcompat         enable Linux bridge compatibility module and daemon
> 
> diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in
> index b8dc060..ed2fed6 100644
> --- a/utilities/ovs-lib.in
> +++ b/utilities/ovs-lib.in
> @@ -88,7 +88,8 @@ pid_exists () {
> 
> start_daemon () {
>     priority=$1
> -    shift
> +    wrapper=$2
> +    shift; shift
>     daemon=$1
> 
>     # drop core files in a sensible place
> @@ -105,6 +106,30 @@ start_daemon () {
>     set "$@" --pidfile="$rundir/$daemon.pid"
>     set "$@" --detach --monitor
> 
> +    # wrapper
> +    case $wrapper in
> +        valgrind)
> +            if (valgrind --version) > /dev/null 2>&1; then
> +                set valgrind -q --leak-check=full \
> +                    --log-file="$logdir/$daemon.valgrind.log.%p" "$@"
> +            else
> +                log_failure_msg "valgrind not installed, running $daemon 
> without it"
> +            fi
> +            ;;
> +        strace)
> +            if (strace -V) > /dev/null 2>&1; then
> +                set strace -ff -o "$logdir/$daemon.strace.log" "$@"
> +            else
> +                log_failure_msg "strace not installed, running $daemon 
> without it"
> +            fi
> +            ;;
> +        '')
> +            ;;
> +        *)
> +            log_failure_msg "unknown wrapper $wrapper, running $daemon 
> without it"
> +            ;;
> +    esac
> +
>     # priority
>     if test X"$priority" != X; then
>         set nice -n "$priority" "$@"
> -- 
> 1.7.2.5
> 
> _______________________________________________
> dev mailing list
> [email protected]
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to