diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..99d6eca --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/opensm-3.3.24.tar.gz diff --git a/.opensm.metadata b/.opensm.metadata new file mode 100644 index 0000000..54ac3fa --- /dev/null +++ b/.opensm.metadata @@ -0,0 +1 @@ +285f447c556b67dc5be1deaaab9294b7a8697317 SOURCES/opensm-3.3.24.tar.gz diff --git a/SOURCES/opensm.launch b/SOURCES/opensm.launch new file mode 100644 index 0000000..ba21a71 --- /dev/null +++ b/SOURCES/opensm.launch @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Launch the necessary OpenSM daemons for systemd +# +# sysconfig: /etc/sysconfig/opensm +# config: /etc/rdma/opensm.conf +# + +shopt -s nullglob + +prog=/usr/sbin/opensm +[ -f /etc/sysconfig/opensm ] && . /etc/sysconfig/opensm + +[ -n "$PRIORITY" ] && prio="-p $PRIORITY" + +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 +# Start opensm +if [ -n "$GUIDS" ]; then + SUBNET_COUNT=0 + for guid in $GUIDS; do + SUBNET_PREFIX=`printf "0xfe800000000000%02d" $SUBNET_COUNT` + (while true; do $prog $prio -g $guid --subnet_prefix $SUBNET_PREFIX; sleep 30; done) & + let SUBNET_COUNT++ + done +elif [ -n "$CONFIGS" ]; then + for config in $CONFIGS; do + (while true; do $prog $prio -F $config; sleep 30; done) & + done +else + (while true; do $prog $prio; sleep 30; done) & +fi +exit 0 diff --git a/SOURCES/opensm.logrotate b/SOURCES/opensm.logrotate new file mode 100644 index 0000000..e16e227 --- /dev/null +++ b/SOURCES/opensm.logrotate @@ -0,0 +1,7 @@ +/var/log/opensm.log { + missingok + notifempty + copytruncate + weekly + compress +} diff --git a/SOURCES/opensm.partitions b/SOURCES/opensm.partitions new file mode 100644 index 0000000..958afeb --- /dev/null +++ b/SOURCES/opensm.partitions @@ -0,0 +1,74 @@ +# For reference: +# IPv4 IANA reserved multicast addresses: +# http://www.iana.org/assignments/multicast-addresses/multicast-addresses.txt +# IPv6 IANA reserved multicast addresses: +# http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xml +# +# mtu = +# 1 = 256 +# 2 = 512 +# 3 = 1024 +# 4 = 2048 +# 5 = 4096 +# +# rate = +# 2 = 2.5 GBit/s (SDR 1x) +# 3 = 10 GBit/s (SDR 4x/QDR 1x) +# 4 = 30 GBit/s (SDR 12x) +# 5 = 5 GBit/s (DDR 1x) +# 6 = 20 GBit/s (DDR 4x) +# 7 = 40 GBit/s (QDR 4x) +# 8 = 60 GBit/s (DDR 12x) +# 9 = 80 GBit/s (QDR 8x) +# 10 = 120 GBit/s (QDR 12x) +# If ExtendedLinkSpeeds are supported, then these rate values are valid too +# 11 = 14 GBit/s (FDR 1x) +# 12 = 56 GBit/s (FDR 4x) +# 13 = 112 GBit/s (FDR 8x) +# 14 = 168 GBit/s (FDR 12x) +# 15 = 25 GBit/s (EDR 1x) +# 16 = 100 GBit/s (EDR 4x) +# 17 = 200 GBit/s (EDR 8x) +# 18 = 300 GBit/s (EDR 12x) + +Default=0x7fff, rate=3, mtu=4, scope=2, defmember=full: + ALL, ALL_SWITCHES=full; +Default=0x7fff, ipoib, rate=3, mtu=4, scope=2: + mgid=ff12:401b::ffff:ffff # IPv4 Broadcast address + mgid=ff12:401b::1 # IPv4 All Hosts group + mgid=ff12:401b::2 # IPv4 All Routers group + mgid=ff12:401b::16 # IPv4 IGMP group + mgid=ff12:401b::fb # IPv4 mDNS group + mgid=ff12:401b::fc # IPv4 Multicast Link Local Name Resolution group + mgid=ff12:401b::101 # IPv4 NTP group + mgid=ff12:401b::202 # IPv4 Sun RPC + mgid=ff12:601b::1 # IPv6 All Hosts group + mgid=ff12:601b::2 # IPv6 All Routers group + mgid=ff12:601b::16 # IPv6 MLDv2-capable Routers group + mgid=ff12:601b::fb # IPv6 mDNS group + mgid=ff12:601b::101 # IPv6 NTP group + mgid=ff12:601b::202 # IPv6 Sun RPC group + mgid=ff12:601b::1:3 # IPv6 Multicast Link Local Name Resolution group + ALL=full, ALL_SWITCHES=full; + +# 40GBit, 4K MTU IPoIB example +#ib0_2=0x0002, rate=7, mtu=5, scope=2, defmember=full: +# ALL, ALL_SWITCHES=full; +#ib0_2=0x0002, ipoib, rate=7, mtu=5, scope=2: +# mgid=ff12:401b::ffff:ffff # IPv4 Broadcast address +# mgid=ff12:401b::1 # IPv4 All Hosts group +# mgid=ff12:401b::2 # IPv4 All Routers group +# mgid=ff12:401b::16 # IPv4 IGMP group +# mgid=ff12:401b::fb # IPv4 mDNS group +# mgid=ff12:401b::fc # IPv4 Multicast Link Local Name Resolution group +# mgid=ff12:401b::101 # IPv4 NTP group +# mgid=ff12:401b::202 # IPv4 Sun RPC +# mgid=ff12:601b::1 # IPv6 All Hosts group +# mgid=ff12:601b::2 # IPv6 All Routers group +# mgid=ff12:601b::16 # IPv6 MLDv2-capable Routers group +# mgid=ff12:601b::fb # IPv6 mDNS group +# mgid=ff12:601b::101 # IPv6 NTP group +# mgid=ff12:601b::202 # IPv6 Sun RPC group +# mgid=ff12:601b::1:3 # IPv6 Multicast Link Local Name Resolution group +# ALL=full, ALL_SWITCHES=full; + diff --git a/SOURCES/opensm.rwtab b/SOURCES/opensm.rwtab new file mode 100644 index 0000000..c298bac --- /dev/null +++ b/SOURCES/opensm.rwtab @@ -0,0 +1 @@ +empty /var/cache/opensm diff --git a/SOURCES/opensm.service b/SOURCES/opensm.service new file mode 100644 index 0000000..1a64a83 --- /dev/null +++ b/SOURCES/opensm.service @@ -0,0 +1,13 @@ +[Unit] +Description=Starts the OpenSM InfiniBand fabric Subnet Manager +Documentation=man:opensm +DefaultDependencies=false +Before=network.target remote-fs-pre.target +After=rdma-hw.target + +[Service] +Type=forking +ExecStart=/usr/libexec/opensm-launch + +[Install] +WantedBy=network.target diff --git a/SOURCES/opensm.sysconfig b/SOURCES/opensm.sysconfig new file mode 100644 index 0000000..5f21efa --- /dev/null +++ b/SOURCES/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/SPECS/opensm.spec b/SPECS/opensm.spec new file mode 100644 index 0000000..c413a0d --- /dev/null +++ b/SPECS/opensm.spec @@ -0,0 +1,324 @@ +%global __remake_config 1 + +Name: opensm +Version: 3.3.24 +Release: 2%{?dist} +Summary: OpenIB InfiniBand Subnet Manager and management utilities +License: GPLv2 or BSD +Url: https://github.com/linux-rdma/opensm + +Source0: https://github.com/linux-rdma/opensm/releases/download/%{version}/%{name}-%{version}.tar.gz +Source2: opensm.logrotate +Source4: opensm.sysconfig +Source5: opensm.service +Source6: opensm.launch +Source7: opensm.rwtab +Source8: opensm.partitions + +BuildRequires: make +BuildRequires: gcc +BuildRequires: libibumad-devel, systemd, systemd-units +BuildRequires: bison, flex, byacc +%if %{__remake_config} +BuildRequires: libtool, autoconf, automake +%endif +Requires: %{name}-libs%{?_isa} = %{version}-%{release}, logrotate, rdma +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +# RDMA is not currently built on 32-bit ARM: #1484155 +ExcludeArch: s390 %{arm} + +%description +OpenSM is the OpenIB project's Subnet Manager for Infiniband networks. +The subnet manager is run as a system daemon on one of the machines in +the infiniband fabric to manage the fabric's routing state. This package +also contains various tools for diagnosing and testing Infiniband networks +that can be used from any machine and do not need to be run on a machine +running the opensm daemon. + +%package libs +Summary: Libraries used by opensm and included utilities + +%description libs +Shared libraries for Infiniband user space access + +%package devel +Summary: Development files for the opensm-libs libraries +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description devel +Development environment for the opensm libraries + +%package static +Summary: Static version of the opensm libraries +Requires: %{name}-devel%{?_isa} = %{version}-%{release} +%description static +Static version of opensm libraries + +%prep +%setup -q + +%build +%if %{__remake_config} +./autogen.sh +%endif +%configure --with-opensm-conf-sub-dir=rdma +%make_build +cd opensm +./opensm -c ../opensm-%{version}.conf + +%install +%make_install +# remove unpackaged files from the buildroot +rm -f %{buildroot}%{_libdir}/*.la +rm -fr %{buildroot}%{_sysconfdir}/init.d +install -D -m644 opensm-%{version}.conf %{buildroot}%{_sysconfdir}/rdma/opensm.conf +install -D -m644 %{SOURCE2} %{buildroot}%{_sysconfdir}/logrotate.d/opensm +install -D -m644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/opensm +install -D -m644 %{SOURCE5} %{buildroot}%{_unitdir}/opensm.service +install -D -m755 %{SOURCE6} %{buildroot}%{_libexecdir}/opensm-launch +install -D -m644 %{SOURCE7} %{buildroot}%{_sysconfdir}/rwtab.d/opensm +install -D -m644 %{SOURCE8} %{buildroot}%{_sysconfdir}/rdma/partitions.conf +mkdir -p ${RPM_BUILD_ROOT}/var/cache/opensm + +%post +%systemd_post opensm.service + +%preun +%systemd_preun opensm.service + +%postun +if [ -d /var/cache/opensm ]; then + rm -fr /var/cache/opensm +fi +%systemd_postun_with_restart opensm.service + +%ldconfig_scriptlets libs + +%files +%dir /var/cache/opensm +%{_sbindir}/* +%{_mandir}/*/* +%{_unitdir}/* +%{_libexecdir}/* +%config(noreplace) %{_sysconfdir}/logrotate.d/opensm +%config(noreplace) %{_sysconfdir}/rdma/opensm.conf +%config(noreplace) %{_sysconfdir}/rdma/partitions.conf +%config(noreplace) %{_sysconfdir}/sysconfig/opensm +%{_sysconfdir}/rwtab.d/opensm +%doc AUTHORS ChangeLog INSTALL README NEWS +%license COPYING + +%files libs +%{_libdir}/lib*.so.* + +%files devel +%{_libdir}/lib*.so +%{_includedir}/infiniband + +%files static +%{_libdir}/lib*.a + +%changelog +* Mon Aug 09 2021 Mohan Boddu - 3.3.24-2 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 + +* Wed Jun 16 2021 Honggang Li - 3.3.24-1 +- Rebase opensm to latest upstream release 3.3.24 +- Resolves: bz1961963 + +* Fri Apr 16 2021 Mohan Boddu - 3.3.23-7 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Jan 26 2021 Fedora Release Engineering - 3.3.23-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Thu Dec 10 2020 Timm Bäder 3.3.23.5 +- Use make macros + https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make + +* Thu Dec 10 2020 Honggang Li - 3.3.23-4 +- opensm service should after rdma-hw.target + +* Thu Oct 29 2020 Honggang Li -3.3.23-3 +- Update systemd service file + +* Tue Jul 28 2020 Fedora Release Engineering - 3.3.23-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Mar 16 2020 Honggang Li - 3.3.23-1 +- Rebase opensm to latest upstream release 3.3.23 +- Resolves: bz1813779 + +* Wed Jan 29 2020 Fedora Release Engineering - 3.3.22-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 3.3.22-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Apr 17 2019 Honggang Li - 3.3.22-1 +- Rebase opensm to latest upstream release 3.3.22 +- Resolves: bz1700766 + +* Fri Feb 01 2019 Fedora Release Engineering - 3.3.21-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Honggang Li - 3.3.21-2 +- Restore the subnet prefix patch +- Resolves: bz1663785 + +* Mon Oct 8 2018 Honggang Li - 3.3.21-1 +- Rebase opensm to latest upstream release 3.3.21 +- Resolves: bz1637260 + +* Fri Jul 13 2018 Fedora Release Engineering - 3.3.20-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Feb 08 2018 Fedora Release Engineering - 3.3.20-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Feb 1 2018 Honggang Li - 3.3.20-7 +- Fix BuildRequires +- Fix preuninstall script +- Resolves: bz1540934 + +* Mon Aug 28 2017 Honggang Li - 3.3.20-6 +- Add support for s309x + +* Sat Aug 26 2017 Honggang Li - 3.3.20-5 +- Disable support for ARM32. +- Resolves: bz1484155 + +* Thu Aug 03 2017 Fedora Release Engineering - 3.3.20-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.3.20-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 3.3.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jun 10 2016 Honggang Li - 3.3.20-1 +- Update to latest upstream release +- Resolves: bz1344691 + +* Wed Mar 16 2016 Doug Ledford - 3.3.19-1 +- Update to latest upstream release +- Incorporate features from RHEL opensm +- Resolves: bz1124202 + +* Thu Feb 04 2016 Fedora Release Engineering - 3.3.17-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 3.3.17-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 3.3.17-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 3.3.17-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 29 2014 Michael Schwendt - 3.3.17-2 +- Don't include manual page directories (#1089412). +- Use standard group Development/Libraries in library devel packages. +- Use %%?_isa in base package dependencies. + +* Mon Mar 17 2014 Peter Robinson 3.3.17-1 +- Update to 3.3.17 + +* Sat Aug 03 2013 Fedora Release Engineering - 3.3.15-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Mar 25 2013 Doug Ledford - 3.3.15-6 +- Oops, forgot to remove the -B option to opensm when starting it + +* Mon Mar 25 2013 Doug Ledford - 3.3.15-5 +- Drop the old sysv init script +- Fix opensm-launch to restart opensm in a loop. This works around the + fact that systemd starts opensm so early that we very well might not have + sync on the link yet. Without the physical link being up, opensm exits + immediately. This way opensm will get restarted every 30 seconds until + sync is active on the link or until the opensm service is stopped. +- Always install the newly generated opensm-%%{version}.conf as opensm.conf +- Make the launch work properly in the event that no GUIDs are set and + there are no numbered config files + +* Thu Feb 14 2013 Fedora Release Engineering - 3.3.15-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Dec 05 2012 Doug Ledford - 3.3.15-3 +- Fix startup on read only root +- Update default config file +- Resolves: bz817591 + +* Wed Dec 05 2012 Doug Ledford - 3.3.15-2 +- More tweaks to systemd setup (proper scriptlets now) +- More tweaks to old sysv init script support (fix Requires) + +* Tue Nov 27 2012 Doug Ledford - 3.3.15-1 +- Update to latest upstream release +- Update to systemd startup + +* Fri Jul 20 2012 Fedora Release Engineering - 3.3.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Mar 13 2012 Doug Ledford - 3.3.13-2 +- Fix the config file comment in the opensm init script +- Resolves: bz802727 + +* Tue Feb 28 2012 Doug Ledford - 3.3.13-1 +- Update to latest upstream version +- Fix a minor issue in init scripts that would cause systemd to try and + start/stop things in the wrong order +- Add a patch to allow us to specify the subnet prefix on the command line + +* Tue Jan 03 2012 Doug Ledford - 3.3.12-1 +- Update to latest upstream version + +* Mon Aug 15 2011 Kalev Lember - 3.3.9-2 +- Rebuilt for rpm bug #728707 + +* 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 + +* Mon Mar 08 2010 Doug Ledford - 3.3.5-1 +- Update to latest upstream release. We need various defines in ib_types.h + for the latest ibutils package to build properly, and the latest ibutils + package is needed because we found licensing problems in the older + tarballs during review. + +* Mon Jan 11 2010 Doug Ledford - 3.3.3-2 +- ExcludeArch s390(x) as there's no hardware support there + +* Thu Dec 03 2009 Doug Ledford - 3.3.3-1 +- Update to latest upstream release +- Minor tweaks to init script for LSB compliance + +* Sat Jul 25 2009 Fedora Release Engineering - 3.3.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jul 20 2009 Doug Ledford - 3.3.2-1 +- Update to latest upstream version + +* Wed Apr 22 2009 Doug Ledford - 3.3.1-1 +- Update to latest upstream version + +* Fri Mar 06 2009 Caolán McNamara - 3.2.1-3 +- fix bare elifs to rebuild + +* Thu Feb 26 2009 Fedora Release Engineering - 3.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Sun Jun 08 2008 Doug Ledford - 3.2.1-1 +- Initial package for Fedora review process