diff --git a/.gitignore b/.gitignore index 26ffc26..65c6f14 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ opensm-3.3.1.tar.gz opensm-3.3.2.tar.gz opensm-3.3.3.tar.gz opensm-3.3.5.tar.gz +opensm-3.3.9.tar.gz diff --git a/opensm.conf b/opensm.conf index 15cde45..8abfe6d 100644 --- a/opensm.conf +++ b/opensm.conf @@ -33,6 +33,9 @@ lmc 0 # ESP0. Otherwise, LMC value for ESP0s is 0. lmc_esp0 FALSE +# sm_sl determines SMSL used for SM/SA communication +sm_sl 0 + # The code of maximal time a packet can live in a switch # The actual time is 4.096usec * 2^ # The value 0x14 disables this mechanism @@ -88,7 +91,7 @@ overrun_errors_threshold 0x08 # PARTITIONING OPTIONS # # Partition configuration file to be used -partition_config_file /etc/ofed/partitions.conf +partition_config_file /etc/rdma/partitions.conf # Disable partition enforcement by switches no_partition_enforcement FALSE @@ -118,6 +121,12 @@ port_profile_switch_nodes FALSE # Name of file with port guids to be ignored by port profiling port_prof_ignore_file (null) +# The file holding routing weighting factors per output port +hop_weights_file (null) + +# The file holding non-default port order per switch for DOR routing +dimn_ports_file (null) + # Routing engine # Multiple routing engines can be specified separated by # commas so that specific ordering of routing algorithms will @@ -145,6 +154,14 @@ root_guid_file (null) # One guid in each line cn_guid_file (null) +# The file holding the fat-tree I/O node guids +# One guid in each line +io_guid_file (null) + +# Number of reverse hops allowed for I/O nodes +# Used for connectivity between I/O nodes connected to Top Switches +max_reverse_hops 0 + # The file holding the node ids which will be used by Up/Down algorithm instead # of GUIDs (one guid and id in each line) ids_guid_file (null) @@ -152,15 +169,25 @@ ids_guid_file (null) # The file holding guid routing order guids (for MinHop and Up/Down) guid_routing_order_file (null) +# Do mesh topology analysis (for LASH algorithm) +do_mesh_analysis FALSE + +# Starting VL for LASH algorithm +lash_start_vl 0 + # SA database file name sa_db_file (null) +# If TRUE causes OpenSM to dump SA database at the end of +# every light sweep, regardless of the verbosity level +sa_db_dump FALSE + # # HANDOVER - MULTIPLE SMs OPTIONS # # SM priority used for deciding who is the master # Range goes from 0 (lowest priority) to 15 (highest). -sm_priority 15 +sm_priority 0 # If TRUE other SMs on the subnet should be ignored ignore_other_sm FALSE @@ -179,11 +206,21 @@ honor_guid2lid_file FALSE # TIMING AND THREADING OPTIONS # # Maximum number of SMPs sent in parallel -max_wire_smps 32 +max_wire_smps 4 + +# Maximum number of timeout based SMPs allowed to be outstanding +# A value less than or equal to max_wire_smps disables this mechanism +max_wire_smps2 4 + +# The timeout in [usec] used for sending SMPs above max_wire_smps limit and below max_wire_smps2 limit +max_smps_timeout 600000 # The maximum time in [msec] allowed for a transaction to complete transaction_timeout 200 +# The maximum number of retries allowed for a transaction to complete +transaction_retries 3 + # Maximal time in [msec] a message can stay in the incoming message queue. # If there is more than one message in the queue and the last message # stayed in the queue more than this value, any SA request will be @@ -197,7 +234,7 @@ single_thread FALSE # MISC OPTIONS # # Daemon mode -daemon TRUE +daemon FALSE # SM Inactive sm_inactive FALSE @@ -205,11 +242,18 @@ sm_inactive FALSE # Babbling Port Policy babbling_port_policy FALSE +# Use Optimized SLtoVLMapping programming if supported by device +use_optimized_slvl FALSE + # # Event Plugin Options # +# Event plugin name(s) event_plugin_name (null) +# Options string that would be passed to the plugin(s) +event_plugin_options (null) + # # Node name map for mapping node's to more descriptive node descriptions # (man ibnetdiscover for more information) @@ -263,7 +307,7 @@ console_port 10000 qos FALSE # QoS policy file to be used -qos_policy_file /etc/ofed/qos-policy.conf +qos_policy_file /etc/rdma/qos-policy.conf # QoS default options qos_max_vls 0 @@ -301,10 +345,13 @@ qos_rtr_vlarb_low (null) qos_rtr_sl2vl (null) # Prefix routes file name -prefix_routes_file /etc/ofed/prefix-routes.conf +prefix_routes_file /etc/rdma/prefix-routes.conf # # IPv6 Solicited Node Multicast (SNM) Options # consolidate_ipv6_snm_req FALSE +# Log prefix +log_prefix (null) + diff --git a/opensm.initd b/opensm.initd index 59d8c4d..3ae4b8b 100644 --- a/opensm.initd +++ b/opensm.initd @@ -18,15 +18,45 @@ prog=/usr/sbin/opensm PID_FILE=/var/run/opensm.pid +[ -f /etc/sysconfig/opensm ] && . /etc/sysconfig/opensm + +[ -n "$PRIORITY" ] && prio="-p $PRIORITY" + ACTION=$1 start() { local OSM_PID= + if [ -z "$GUIDS" ]; then + CONFIGS="" + CONFIG_CNT=0 + for conf in /etc/rdma/opensm.conf.[0-9]*; do + CONFIGS="$CONFIGS $conf" + let CONFIG_CNT++ + done + else + GUID_CNT=0 + for guid in $GUIDS; do + let GUID_CNT++ + done + fi [ -f /var/lock/subsys/opensm ] && return 0 # Start opensm - echo -n "Starting IB Subnet Manager:" - $prog -B > /dev/null 2>&1 + echo -n "Starting IB Subnet Manager: " + [ -n "$PRIORITY" ] && echo -n "Priority=$PRIORITY " + [ -n "$GUIDS" ] && echo -n "$GUID_CNT guids " + [ -n "$CONFIGS" ] && echo -n "$CONFIG_CNT instances " + if [ -n "$GUIDS" ]; then + for guid in $GUIDS; do + $prog -B $prio -g $guid >/dev/null 2>&1 + done + elif [ -n "$CONFIGS" ]; then + for config in $CONFIGS; do + $prog -B $prio -F $config >/dev/null 2>&1 + done + else + $prog -B $prio >/dev/null 2>&1 + fi sleep 1 OSM_PID=`pidof $prog` checkpid $OSM_PID @@ -42,7 +72,7 @@ stop() { [ -f /var/lock/subsys/opensm ] || return 0 - echo -n "Stopping IB Subnet Manager." + echo -n "Stopping IB Subnet Manager(s)." OSM_PID=`cat $PID_FILE` @@ -55,7 +85,7 @@ stop() return 0 fi # Kill opensm - kill -15 $OSM_PID > /dev/null 2>&1 + kill -15 $OSM_PID >/dev/null 2>&1 cnt=0 while [ $cnt -lt 6 ]; do checkpid $OSM_PID @@ -64,7 +94,7 @@ stop() fi echo -n "." sleep 1 - cnt=$(( $cnt + 1 )) + let cnt++ done checkpid $OSM_PID diff --git a/opensm.spec b/opensm.spec index f97519d..92635f4 100644 --- a/opensm.spec +++ b/opensm.spec @@ -1,6 +1,6 @@ Name: opensm -Version: 3.3.5 -Release: 2%{?dist} +Version: 3.3.9 +Release: 1%{?dist} Summary: OpenIB InfiniBand Subnet Manager and management utilities Group: System Environment/Daemons License: GPLv2 or BSD @@ -9,8 +9,9 @@ Source0: http://www.openfabrics.org/downloads/management/%{name}-%{version}.tar. Source1: opensm.conf Source2: opensm.logrotate Source3: opensm.initd +Source4: opensm.sysconfig BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: libibmad-devel = 1.3.4, libtool, bison, flex, byacc +BuildRequires: libibmad-devel = 1.3.7, libtool, bison, flex, byacc Requires: %{name}-libs = %{version}-%{release}, logrotate, rdma ExcludeArch: s390 s390x @@ -52,18 +53,19 @@ Static version of opensm libraries make %{?_smp_mflags} %install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT +rm -rf %{buildroot} +make install DESTDIR=%{buildroot} # remove unpackaged files from the buildroot -rm -f $RPM_BUILD_ROOT%{_libdir}/*.la -rm -fr $RPM_BUILD_ROOT%{_sysconfdir}/init.d -install -D -m644 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/rdma/opensm.conf -install -D -m644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/opensm -install -D -m755 %{SOURCE3} $RPM_BUILD_ROOT%{_initddir}/opensm +rm -f %{buildroot}%{_libdir}/*.la +rm -fr %{buildroot}%{_sysconfdir}/init.d +install -D -m644 %{SOURCE1} %{buildroot}%{_sysconfdir}/rdma/opensm.conf +install -D -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/opensm +install -D -m755 %{SOURCE3} %{buildroot}%{_initddir}/opensm +install -D -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/opensm mkdir -p ${RPM_BUILD_ROOT}/var/cache/opensm %clean -rm -rf $RPM_BUILD_ROOT +rm -rf %{buildroot} %post if [ $1 = 1 ]; then @@ -91,6 +93,7 @@ fi %{_mandir}/man8/* %config(noreplace) %{_sysconfdir}/logrotate.d/opensm %config(noreplace) %{_sysconfdir}/rdma/opensm.conf +%config(noreplace) %{_sysconfdir}/sysconfig/opensm %doc AUTHORS COPYING ChangeLog INSTALL README NEWS %files libs @@ -107,6 +110,14 @@ fi %{_libdir}/lib*.a %changelog +* Wed Jul 20 2011 Doug Ledford - 3.3.9-1 +- Update to latest upstream version +- Add /etc/sysconfig/opensm for use by opensm init script +- Enable the ability to start more than one instance of opensm for multiple + fabric support +- Enable the ability to start opensm with a priority other than default for + support of backup opensm instances + * Tue Feb 08 2011 Fedora Release Engineering - 3.3.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild @@ -140,4 +151,3 @@ fi * Sun Jun 08 2008 Doug Ledford - 3.2.1-1 - Initial package for Fedora review process - diff --git a/opensm.sysconfig b/opensm.sysconfig new file mode 100644 index 0000000..5f21efa --- /dev/null +++ b/opensm.sysconfig @@ -0,0 +1,72 @@ +# Problem #1: Multiple IB fabrics needing a subnet manager +# +# In the event that a machine has more than one IB subnet attached, +# and that machine is an opensm server, by default, opensm will +# only attach to one port and will not manage the fabric on the +# other port. There are two ways to solve this problem: +# +# 1) Start opensm on multiple machines and configure it to manage +# different fabrics on each machine +# 2) Configure opensm to start multiple instances on a single +# machine +# +# Both solutions to this problem require non-standard configurations. +# In other words, you would normally have to modify /etc/rdma/opensm.conf +# and once you do that, the file will no longer be updated for new +# options when opensm is upgraded. In an effort to allow people to +# have more than one subnet managed by opensm without having to modify +# the system default opensm.conf file, we have enabled two methods +# for modifying the default opensm config items needed to enable +# multiple fabric management. +# +# Method #1: Create multiple opensm.conf files in non-standard locations +# Copy /etc/rdma/opensm.conf to /etc/rdma/opensm.conf. +# (do this once for each instance you want started) +# Edit each copy of the opensm.conf file to reflect the necessary changes +# for a multiple instance startup. If you need to manage more than +# one fabric, you will have to change the guid option in each file +# to specify the guid of the specific port you want opensm attached +# to. +# +# The advantage to method #1 is that, on the off chance you want to do +# really special custom things on different ports, like have different +# QoS settings depending on which port you are attached to, you have the +# freedom to edit any and all settings for each instance without those +# changes affecting other instances or being lost when opensm upgrades. +# +# Method #2: Specify multiple GUIDS variable entries in this file +# Uncomment the below GUIDS variable and enter each guid you need to attach +# to into the list. If using this method you need to enter each +# guid into the list as we won't attach to any default ports, only +# those specified in the list. +# +#GUIDS="0x0002c90300048ca1 0x0002c90300048ca2" +# +# The obvious advantage to method #2 is that it's simple and doesn't +# clutter up your file system, but it is far more limited in what you +# can do. If you enable method #2, then even if you create the files +# referenced in method #1, they will be ignored. +# +# Problem #2: Activating a backup subnet manager +# +# The default priority of opensm is set so that it wants to be the +# primary subnet manager. This is great when you are only running +# opensm on one server, but if you want to have a non-primary opensm +# instance for failover, then you have to manually edit the opensm.conf +# file like for problem #1. This carries with it all the problems +# listed above. If you wish to enable opensm as a non-primary manager, +# then you can uncomment the PRIORITY variable below and set it to +# some number between 0 and 15, where 15 is the highest priority and +# the primary manager, with 0 being the lowest backup server. This method +# will work with the GUIDS option above, and also with the multiple +# config files in method #1 above. However, only a single priority is +# supported here. If you wanted more than one priority (say this machine +# is the primary on the first fabric, and second on the second fabric, +# while the other opensm server is primary on the second fabric and +# second on the primary), then the only way to do that is to use method #1 +# above and individually edit the config files. If you edit the config +# files to set the priority and then also set the priority here, then +# this setting will override the config files and render that particular +# edit useless. +# +#PRIORITY=15 diff --git a/sources b/sources index f290809..e5916d5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -3bdd9f288b50c9031883d2d7c2f15937 opensm-3.3.5.tar.gz +5e9b461073f7cfbafe0207e014796f9f opensm-3.3.9.tar.gz