Merge "citrix" branch into "master".
authorBen Pfaff <blp@nicira.com>
Thu, 25 Mar 2010 19:30:05 +0000 (12:30 -0700)
committerBen Pfaff <blp@nicira.com>
Thu, 25 Mar 2010 19:30:05 +0000 (12:30 -0700)
This merge is long overdue, simply because I forgot that there were
outstanding changes on "citrix" that had not yet been merged.

The important fix here is the addition of mlockall.  This fixes some
bugs seen under stressful conditions in XenServer.

1  2 
ChangeLog
configure.ac
vswitchd/ovs-vswitchd.8.in
vswitchd/ovs-vswitchd.c
xenserver/etc_init.d_vswitch
xenserver/usr_share_vswitch_scripts_sysconfig.template

diff --cc ChangeLog
+++ b/ChangeLog
@@@ -1,17 -1,7 +1,22 @@@
 +v0.99.2 - 18 Feb 2010
 +---------------------
 +    - Bug fixes
 +
 +v0.99.1 - 25 Jan 2010
 +---------------------
 +    - Add support for sFlow(R)
 +    - Make headers compatible with C++
 +    - Bug fixes
 +
 +v0.99.0 - 14 Jan 2010
 +---------------------
 +    - User-space forwarding engine
 +    - Bug fixes
++      
+ v0.90.7 - 29 Nov 2009
+ ---------------------
+     - Add support for NetFlow active timeouts
+     - Bug fixes
  
  v0.90.6 - 6 Oct 2009
  --------------------
diff --cc configure.ac
@@@ -48,11 -44,9 +48,12 @@@ OVS_CHECK_LOGDI
  OVS_CHECK_CURSES
  OVS_CHECK_LINUX_VT_H
  OVS_CHECK_PCRE
 +OVS_CHECK_PYTHON
  OVS_CHECK_IF_PACKET
  OVS_CHECK_STRTOK_R
 +AC_CHECK_MEMBERS([struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec],
 +  [], [], [[#include <sys/stat.h>]])
+ AC_CHECK_FUNCS([mlockall])
  
  OVS_CHECK_PKIDIR
  OVS_CHECK_RUNDIR
Simple merge
  #include <signal.h>
  #include <stdlib.h>
  #include <string.h>
+ #ifdef HAVE_MLOCKALL
+ #include <sys/mman.h>
+ #endif
  
  #include "bridge.h"
 -#include "cfg.h"
  #include "command-line.h"
  #include "compiler.h"
  #include "daemon.h"
@@@ -136,10 -151,10 +139,11 @@@ parse_options(int argc, char *argv[]
  {
      enum {
          OPT_PEER_CA_CERT = UCHAR_MAX + 1,
+         OPT_MLOCKALL,
          OPT_FAKE_PROC_NET,
          VLOG_OPTION_ENUMS,
 -        LEAK_CHECKER_OPTION_ENUMS
 +        LEAK_CHECKER_OPTION_ENUMS,
 +        OPT_BOOTSTRAP_CA_CERT
      };
      static struct option long_options[] = {
          {"help",        no_argument, 0, 'h'},
  test -e /etc/sysconfig/vswitch && . /etc/sysconfig/vswitch
  
  # General config variables in /etc/sysconfig/vswitch
 -VSWITCH_BASE="${VSWITCH_BASE:-/root/vswitch}"
 -ENABLE_BRCOMPAT="${ENABLE_BRCOMPAT:-y}"
 -ENABLE_FAKE_PROC_NET="${ENABLE_FAKE_PROC_NET:-y}"
 -FORCE_COREFILES="${FORCE_COREFILES:-y}"
 +: ${ENABLE_BRCOMPAT:=y}
 +: ${ENABLE_FAKE_PROC_NET:=y}
 +: ${ENABLE_MONITOR:=y}
 +: ${FORCE_COREFILES:=y}
 +
 +# Config variables specific to ovsdb-server
 +: ${OVSDB_SERVER_REMOTES:=punix:/var/run/ovsdb-server db:Open_vSwitch,managers}
 +: ${OVSDB_SERVER_DB:=/etc/ovs-vswitchd.conf.db}
 +: ${OVSDB_SERVER_PIDFILE:=/var/run/ovsdb-server.pid}
 +: ${OVSDB_SERVER_RUN_DIR:=/var/xen/vswitch}
 +: ${OVSDB_SERVER_PRIORITY:=-10}
 +: ${OVSDB_SERVER_LOGFILE:=/var/log/ovsdb-server.log}
 +: ${OVSDB_SERVER_FILE_LOGLEVEL:=INFO}
 +: ${OVSDB_SERVER_SYSLOG_LOGLEVEL:=ERR}
 +: ${OVSDB_SERVER_MEMLEAK_LOGFILE:=}
 +: ${OVSDB_SERVER_STRACE_LOG:=}
 +: ${OVSDB_SERVER_STRACE_OPT:=}
 +: ${OVSDB_SERVER_VALGRIND_LOG:=}
 +: ${OVSDB_SERVER_VALGRIND_OPT:=}
  
  # Config variables specific to ovs-vswitchd
 -VSWITCHD_CONF="${VSWITCHD_CONF:-/etc/ovs-vswitchd.conf}"
 -VSWITCHD_PIDFILE="${VSWITCHD_PIDFILE:-/var/run/ovs-vswitchd.pid}"
 -VSWITCHD_RUN_DIR="${VSWITCHD_RUN_DIR:-/var/xen/vswitch}"
 -VSWITCHD_PRIORITY="${VSWITCHD_PRIORITY:--10}"
 -VSWITCHD_MLOCKALL="${VSWITCHD_MLOCKALL:-yes}"
 -VSWITCHD_LOGFILE="${VSWITCHD_LOGFILE:-/var/log/ovs-vswitchd.log}"
 -VSWITCHD_FILE_LOGLEVEL="${VSWITCHD_FILE_LOGLEVEL:-INFO}"
 -VSWITCHD_SYSLOG_LOGLEVEL="${VSWITCHD_SYSLOG_LOGLEVEL:-ERR}"
 -VSWITCHD_MEMLEAK_LOGFILE="${VSWITCHD_MEMLEAK_LOGFILE:-}"
 -VSWITCHD_STRACE_LOG="${VSWITCHD_STRACE_LOG:-}"
 -VSWITCHD_STRACE_OPT="${VSWITCHD_STRACE_OPT:-}"
 -VSWITCHD_VALGRIND_LOG="${VSWITCHD_VALGRIND_LOG:-}"
 -VSWITCHD_VALGRIND_OPT="${VSWITCHD_VALGRIND_OPT:-}"
 +: ${VSWITCHD_OVSDB_SERVER:=unix:/var/run/ovsdb-server}
 +: ${VSWITCHD_OVSDB_SCHEMA:=/usr/share/vswitch/vswitch.ovsschema}
 +: ${VSWITCHD_PIDFILE:=/var/run/ovs-vswitchd.pid}
 +: ${VSWITCHD_RUN_DIR:=/var/xen/vswitch}
 +: ${VSWITCHD_PRIORITY:=-10}
++: ${VSWITCHD_MLOCKALL:=yes}
 +: ${VSWITCHD_LOGFILE:=/var/log/ovs-vswitchd.log}
 +: ${VSWITCHD_FILE_LOGLEVEL:=INFO}
 +: ${VSWITCHD_SYSLOG_LOGLEVEL:=ERR}
 +: ${VSWITCHD_MEMLEAK_LOGFILE:=}
 +: ${VSWITCHD_STRACE_LOG:=}
 +: ${VSWITCHD_STRACE_OPT:=}
 +: ${VSWITCHD_VALGRIND_LOG:=}
 +: ${VSWITCHD_VALGRIND_OPT:=}
  
  # Config variables specific to ovs-brcompatd
 -BRCOMPATD_PIDFILE="${BRCOMPATD_PIDFILE:-/var/run/ovs-brcompatd.pid}"
 -BRCOMPATD_RUN_DIR="${BRCOMPATD_RUN_DIR:-/var/xen/vswitch}"
 -BRCOMPATD_PRIORITY="${BRCOMPATD_PRIORITY:--10}"
 -BRCOMPATD_LOGFILE="${BRCOMPATD_LOGFILE:-/var/log/ovs-brcompatd.log}"
 -BRCOMPATD_FILE_LOGLEVEL="${BRCOMPATD_FILE_LOGLEVEL:-INFO}"
 -BRCOMPATD_SYSLOG_LOGLEVEL="${BRCOMPATD_SYSLOG_LOGLEVEL:-ERR}"
 -BRCOMPATD_MEMLEAK_LOGFILE="${BRCOMPATD_MEMLEAK_LOGFILE:-}"
 -BRCOMPATD_STRACE_LOG="${BRCOMPATD_STRACE_LOG:-}"
 -BRCOMPATD_STRACE_OPT="${BRCOMPATD_STRACE_OPT:-}"
 -BRCOMPATD_VALGRIND_LOG="${BRCOMPATD_VALGRIND_LOG:-}"
 -BRCOMPATD_VALGRIND_OPT="${BRCOMPATD_VALGRIND_OPT:-}"
 -
 -
 -
 +: ${BRCOMPATD_PIDFILE:=/var/run/ovs-brcompatd.pid}
 +: ${BRCOMPATD_RUN_DIR:=/var/xen/vswitch}
 +: ${BRCOMPATD_PRIORITY:=-10}
 +: ${BRCOMPATD_LOGFILE:=/var/log/ovs-brcompatd.log}
 +: ${BRCOMPATD_FILE_LOGLEVEL:=INFO}
 +: ${BRCOMPATD_SYSLOG_LOGLEVEL:=ERR}
 +: ${BRCOMPATD_MEMLEAK_LOGFILE:=}
 +: ${BRCOMPATD_STRACE_LOG:=}
 +: ${BRCOMPATD_STRACE_OPT:=}
 +: ${BRCOMPATD_VALGRIND_LOG:=}
 +: ${BRCOMPATD_VALGRIND_OPT:=}
  
  # Full paths to executables & modules
 -vswitchd="$VSWITCH_BASE/sbin/ovs-vswitchd"
 -brcompatd="$VSWITCH_BASE/sbin/ovs-brcompatd"
 -dpctl="$VSWITCH_BASE/bin/ovs-dpctl"
 -appctl="$VSWITCH_BASE/bin/ovs-appctl"
 -ofctl="$VSWITCH_BASE/bin/ovs-ofctl"
 -
 +ovsdb_server="/usr/sbin/ovsdb-server"
 +ovsdb_tool="/usr/bin/ovsdb-tool"
 +vswitchd="/usr/sbin/ovs-vswitchd"
 +brcompatd="/usr/sbin/ovs-brcompatd"
 +dpctl="/usr/bin/ovs-dpctl"
 +appctl="/usr/bin/ovs-appctl"
 +ofctl="/usr/bin/ovs-ofctl"
 +vsctl="/usr/bin/ovs-vsctl"
  
  if [ "$ENABLE_FAKE_PROC_NET" = "y" ]; then
      if [ "$ENABLE_BRCOMPAT" != "y" ]; then
@@@ -221,9 -166,9 +225,9 @@@ function start_vswitchd 
      if [ "$daemonize" != "y" ]; then
          # Start in background and force a "success" message
          action "Starting ovs-vswitchd ($strace_opt$valgrind_opt)" true
-         (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER") &
 -        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_CONF") &
++        (nice -n "$VSWITCHD_PRIORITY" $strace_opt $valgrind_opt "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER") &
      else
-         action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt "$VSWITCHD_OVSDB_SERVER"
 -        action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_CONF"
++        action "Starting ovs-vswitchd" nice -n "$VSWITCHD_PRIORITY" "$vswitchd" --pidfile="$VSWITCHD_PIDFILE" --detach $monitor_opt --no-chdir $fake_proc_net_opt -vANY:CONSOLE:EMER $syslog_opt $logfile_level_opt $logfile_file_opt $leak_opt $mlockall_opt "$VSWITCHD_OVSDB_SERVER"
      fi
  }