Hello community,

here is the log from the commit of package rdma-core for openSUSE:Factory 
checked in at 2017-06-02 10:32:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rdma-core (Old)
 and      /work/SRC/openSUSE:Factory/.rdma-core.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rdma-core"

Fri Jun  2 10:32:44 2017 rev:2 rq:500404 version:14

Changes:
--------
--- /work/SRC/openSUSE:Factory/rdma-core/rdma-core.changes      2017-05-18 
20:45:03.998809622 +0200
+++ /work/SRC/openSUSE:Factory/.rdma-core.new/rdma-core.changes 2017-06-02 
10:33:21.507683493 +0200
@@ -1,0 +2,28 @@
+Tue May 30 08:36:52 UTC 2017 - [email protected]
+
+ - Update to v14 (bsc#321907).
+  * Introduction of bnxt_re driver
+  * Rework srp_daemon's systemd integration
+  * Various fixes in qedr, mlx4, mlx5, bnxrt_re and rxe drivers
+  * New supported PCI ID were added to mlx5
+  * Addition of manual pages for cmtime and udpong programs
+  * Multiple fixes of spelling types and documentation clarifications
+  * Sparse fixes
+  * rping gained ability to bind to source IP address
+  * Various improvements in cmake and cbuild infrastructures
+  * Add support for flow tag, CVLAN and VXLAN specifications
+  * Provide ability to pass private data to create CQ
+  * Exposure various device capabilities to user applications
+
+
+-------------------------------------------------------------------
+Mon May 29 14:11:24 UTC 2017 - [email protected]
+
+- Fix all references to /usr/libexec (bsc#1039999)
+
+-------------------------------------------------------------------
+Tue May 23 14:28:23 CEST 2017 - [email protected]
+
+- Fix rdma.service which had /usr/libexec hardcoded (bsc#1039999).
+
+-------------------------------------------------------------------

Old:
----
  rdma-core-14-rc1-40-g706fc2af.tar.xz

New:
----
  rdma-core-14.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rdma-core.spec ++++++
--- /var/tmp/diff_new_pack.ziOVOJ/_old  2017-06-02 10:33:22.095600424 +0200
+++ /var/tmp/diff_new_pack.ziOVOJ/_new  2017-06-02 10:33:22.099599858 +0200
@@ -18,7 +18,7 @@
 
 %bcond_without  systemd
 
-%define git_ver -rc1-40-g706fc2af
+%define git_ver %{nil}
 
 Name:           rdma-core
 Version:        14
@@ -100,10 +100,10 @@
 Group:          Development/Libraries/C and C++
 Requires:       %{name}%{?_isa} = %{version}-%{release}
 
-Requires:       %{verbs_lname} = %{version}-%{release}
 Requires:       %{ibcm_lname} = %{version}-%{release}
-Requires:       %{umad_lname} = %{version}-%{release}
 Requires:       %{rdmacm_lname} = %{version}-%{release}
+Requires:       %{umad_lname} = %{version}-%{release}
+Requires:       %{verbs_lname} = %{version}-%{release}
 %ifnarch s390 s390x armv7hl
 Requires:       %{mlx5_lname} = %{version}-%{release}
 %endif
@@ -341,21 +341,28 @@
 mkdir -p %{buildroot}%{_udevrulesdir}
 mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma
 mkdir -p %{buildroot}%{sysmodprobedir}
+mkdir -p %{buildroot}%{_unitdir}
+#
 install -D -m0644 redhat/rdma.conf %{buildroot}/%{_sysconfdir}/rdma/rdma.conf
+sed 's%/usr/libexec%/usr/lib%' redhat/rdma.service > 
%{buildroot}%{_unitdir}/rdma.service
+chmod 0644 %{buildroot}%{_unitdir}/rdma.service
 install -D -m0644 redhat/rdma.sriov-vfs 
%{buildroot}/%{_sysconfdir}/rdma/sriov-vfs
 install -D -m0644 redhat/rdma.mlx4.conf 
%{buildroot}/%{_sysconfdir}/rdma/mlx4.conf
-install -D -m0644 redhat/rdma.service %{buildroot}%{_unitdir}/rdma.service
 install -D -m0644 redhat/rdma.udev-ipoib-naming.rules 
%{buildroot}%{_udevrulesdir}/70-persistent-ipoib.rules
 install -D -m0644 redhat/rdma.mlx4.user.modprobe 
%{buildroot}%{_sysconfdir}/modprobe.d/50-mlx4.conf
-install -D -m0755 redhat/rdma.modules-setup.sh 
%{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh
+sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.modules-setup.sh > 
%{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh
+chmod 0755 %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh
 install -D -m0644 redhat/rdma.udev-rules 
%{buildroot}%{_udevrulesdir}/98-rdma.rules
-install -D -m0644 redhat/rdma.mlx4.sys.modprobe 
%{buildroot}%{sysmodprobedir}/50-libmlx4.conf
+sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.mlx4.sys.modprobe > 
%{buildroot}%{sysmodprobedir}/50-libmlx4.conf
+chmod 0644 %{buildroot}%{sysmodprobedir}/50-libmlx4.conf
 install -D -m0644 redhat/rdma.cxgb3.sys.modprobe 
%{buildroot}%{sysmodprobedir}/50-cxgb3.conf
 install -D -m0644 redhat/rdma.cxgb4.sys.modprobe 
%{buildroot}%{sysmodprobedir}/50-cxgb4.conf
-install -D -m0755 redhat/rdma.kernel-init 
%{buildroot}%{_libexecdir}/rdma-init-kernel
+sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.kernel-init > 
%{buildroot}%{_libexecdir}/rdma-init-kernel
+chmod 0755 %{buildroot}%{_libexecdir}/rdma-init-kernel
 install -D -m0755 redhat/rdma.sriov-init 
%{buildroot}%{_libexecdir}/rdma-set-sriov-vf
 install -D -m0644 redhat/rdma.fixup-mtrr.awk 
%{buildroot}%{_libexecdir}/rdma-fixup-mtrr.awk
 install -D -m0755 redhat/rdma.mlx4-setup.sh 
%{buildroot}%{_libexecdir}/mlx4-setup.sh
+
 mv %{buildroot}%{_sysconfdir}/modprobe.d/truescale.conf 
%{buildroot}%{_sysconfdir}/modprobe.d/50-truescale.conf
 
 # ibacm
@@ -364,14 +371,14 @@
 install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/
 install -D -m0644 ../redhat/ibacm.service %{buildroot}%{_unitdir}/
 
-# srp_daemon
-install -D -m0644 ../redhat/srp_daemon.service %{buildroot}%{_unitdir}/
-
 for service in rdma rdma-ndd ibacm iwpmd srp_daemon; do ln -sf 
%{_sbindir}/service %{buildroot}%{_sbindir}/rc${service}; done
 
 # Delete the package's init.d scripts
 rm -rf %{buildroot}/%{_initddir}/
 
+# Remove former srp_daemon.sh script
+rm  %{buildroot}%{_sbindir}/srp_daemon.sh
+
 %post -n %verbs_lname -p /sbin/ldconfig
 %postun -n %verbs_lname -p /sbin/ldconfig
 
@@ -451,6 +458,7 @@
 
 %postun -n rdma-ndd
 %service_del_postun rdma-ndd.service
+
 %files
 %defattr(-,root,root)
 %dir %{_sysconfdir}/rdma
@@ -463,6 +471,7 @@
 %config(noreplace) %{_sysconfdir}/rdma/*
 %exclude  %{_libexecdir}/udev/rules.d/rdma-ndd.rules
 %config(noreplace) %{_libexecdir}/udev/rules.d/*
+%exclude %{_libexecdir}/udev/rules.d/srp_daemon.rules
 %config(noreplace) %{_sysconfdir}/modprobe.d/50-mlx4.conf
 %config(noreplace) %{_sysconfdir}/modprobe.d/50-truescale.conf
 %{_unitdir}/rdma.service
@@ -597,15 +606,21 @@
 
 %files -n srp_daemon
 %defattr(-,root,root)
+%dir %{_libexecdir}/srp_daemon
 %config(noreplace) %{_sysconfdir}/srp_daemon.conf
+%config(noreplace) %{_libexecdir}/udev/rules.d/srp_daemon.rules
+%{_libexecdir}/srp_daemon/start_on_all_ports
 %{_unitdir}/srp_daemon.service
+%{_unitdir}/[email protected]
 %{_sbindir}/ibsrpdm
 %{_sbindir}/srp_daemon
-%{_sbindir}/srp_daemon.sh
 %{_sbindir}/run_srp_daemon
 %{_sbindir}/rcsrp_daemon
 %{_mandir}/man1/ibsrpdm.1*
 %{_mandir}/man1/srp_daemon.1*
+%{_mandir}/man5/srp_daemon.service.5*
+%{_mandir}/man5/[email protected]*
+
 %doc %{_docdir}/%{name}-%{version}/ibsrpdm.md
 
 %files -n rdma-ndd

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ziOVOJ/_old  2017-06-02 10:33:22.139594207 +0200
+++ /var/tmp/diff_new_pack.ziOVOJ/_new  2017-06-02 10:33:22.143593642 +0200
@@ -5,8 +5,8 @@
     <param name="package-meta">no</param>
     <param name="exclude">.git</param>
     <param name="filename">rdma-core</param>
-    <param name="version">14-rc1-40-g706fc2af</param>
-    <param name="revision">706fc2af866f750a4aa9b61320c7da36bd8ed37c</param>
+    <param name="version">14</param>
+    <param name="revision">b2f6a3699b2a4bb1478e919b29e9a39307457e48</param>
   </service>
   <service name="recompress" mode="disabled">
     <param name="file">*rdma-core*.tar</param>

++++++ rdma-core-14-rc1-40-g706fc2af.tar.xz -> rdma-core-14.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/debian/libibumad3.install 
new/rdma-core-14/debian/libibumad3.install
--- old/rdma-core-14-rc1-40-g706fc2af/debian/libibumad3.install 2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/debian/libibumad3.install  2017-05-30 05:47:40.000000000 
+0200
@@ -1 +1,2 @@
 usr/lib/*/libibumad*.so.*
+lib/udev/rules.d/libibumad.rules
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/debian/srptools.install 
new/rdma-core-14/debian/srptools.install
--- old/rdma-core-14-rc1-40-g706fc2af/debian/srptools.install   2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/debian/srptools.install    2017-05-30 05:47:40.000000000 
+0200
@@ -1,6 +1,12 @@
 etc/srp_daemon.conf
+lib/systemd/system/srp_daemon.service
+lib/systemd/system/[email protected]
+lib/udev/rules.d/srp_daemon.rules
+usr/lib/srp_daemon/start_on_all_ports
 usr/sbin/ibsrpdm
 usr/sbin/srp_daemon
 usr/share/doc/rdma-core/ibsrpdm.md usr/share/doc/srptools/
 usr/share/man/man1/ibsrpdm.1
 usr/share/man/man1/srp_daemon.1
+usr/share/man/man5/srp_daemon.service.5
+usr/share/man/man5/[email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/libibumad/CMakeLists.txt 
new/rdma-core-14/libibumad/CMakeLists.txt
--- old/rdma-core-14-rc1-40-g706fc2af/libibumad/CMakeLists.txt  2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/libibumad/CMakeLists.txt   2017-05-30 05:47:40.000000000 
+0200
@@ -14,3 +14,8 @@
   umad.c
   umad_str.c
   )
+
+rdma_subst_install(FILES libibumad.udev-rules
+  RENAME libibumad.rules
+  DESTINATION "${CMAKE_INSTALL_UDEV_RULESDIR}")
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/libibumad/libibumad.udev-rules 
new/rdma-core-14/libibumad/libibumad.udev-rules
--- old/rdma-core-14-rc1-40-g706fc2af/libibumad/libibumad.udev-rules    
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/libibumad/libibumad.udev-rules     2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1 @@
+ACTION=="add", SUBSYSTEM=="infiniband_mad", TAG+="systemd", 
ENV{SYSTEMD_ALIAS}="/dev/infiniband/umad/$attr{ibdev}:$attr{port}"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rdma-core-14-rc1-40-g706fc2af/libibumad/umad.h 
new/rdma-core-14/libibumad/umad.h
--- old/rdma-core-14-rc1-40-g706fc2af/libibumad/umad.h  2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/libibumad/umad.h   2017-05-30 05:47:40.000000000 +0200
@@ -247,15 +247,17 @@
        free(umad);
 }
 
+/* Users should use the glibc functions directly, not these wrappers */
 #ifndef ntohll
-#undef htonll
 #undef ntohll
-/* Users should use the glibc functions directly, not these wrappers */
-static inline __attribute__((deprecated)) uint64_t htonll(uint64_t x) { return 
htobe64(x); }
 static inline __attribute__((deprecated)) uint64_t ntohll(uint64_t x) { return 
be64toh(x); }
-#define htonll htonll
 #define ntohll ntohll
 #endif
+#ifndef htonll
+#undef htonll
+static inline __attribute__((deprecated)) uint64_t htonll(uint64_t x) { return 
htobe64(x); }
+#define htonll htonll
+#endif
 
 END_C_DECLS
 #endif                         /* _UMAD_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/librdmacm/examples/rping.c 
new/rdma-core-14/librdmacm/examples/rping.c
--- old/rdma-core-14-rc1-40-g706fc2af/librdmacm/examples/rping.c        
2017-05-13 12:42:30.000000000 +0200
+++ new/rdma-core-14/librdmacm/examples/rping.c 2017-05-30 05:47:40.000000000 
+0200
@@ -141,6 +141,7 @@
        sem_t sem;
 
        struct sockaddr_storage sin;
+       struct sockaddr_storage ssource;
        __be16 port;                    /* dst port in NBO */
        int verbose;                    /* verbose logging */
        int count;                      /* ping count */
@@ -1039,7 +1040,12 @@
        else
                ((struct sockaddr_in6 *) &cb->sin)->sin6_port = cb->port;
 
-       ret = rdma_resolve_addr(cb->cm_id, NULL, (struct sockaddr *) &cb->sin, 
2000);
+       if (cb->ssource.ss_family) 
+               ret = rdma_resolve_addr(cb->cm_id, (struct sockaddr *) 
&cb->ssource,
+                                       (struct sockaddr *) &cb->sin, 2000);
+       else
+               ret = rdma_resolve_addr(cb->cm_id, NULL, (struct sockaddr *) 
&cb->sin, 2000);
+
        if (ret) {
                perror("rdma_resolve_addr");
                return ret;
@@ -1140,9 +1146,10 @@
 {
        printf("%s -s [-vVd] [-S size] [-C count] [-a addr] [-p port]\n", 
               basename(name));
-       printf("%s -c [-vVd] [-S size] [-C count] -a addr [-p port]\n", 
+       printf("%s -c [-vVd] [-S size] [-C count] [-I addr] -a addr [-p 
port]\n", 
               basename(name));
        printf("\t-c\t\tclient side\n");
+       printf("\t-I\t\tSource address to bind to for client.\n");
        printf("\t-s\t\tserver side.  To bind to any address with IPv6 use -a 
::0\n");
        printf("\t-v\t\tdisplay ping data to stdout\n");
        printf("\t-V\t\tvalidate ping data\n");
@@ -1174,11 +1181,14 @@
        sem_init(&cb->sem, 0, 0);
 
        opterr = 0;
-       while ((op=getopt(argc, argv, "a:Pp:C:S:t:scvVd")) != -1) {
+       while ((op=getopt(argc, argv, "a:I:Pp:C:S:t:scvVd")) != -1) {
                switch (op) {
                case 'a':
                        ret = get_addr(optarg, (struct sockaddr *) &cb->sin);
                        break;
+               case 'I':
+                       ret = get_addr(optarg, (struct sockaddr *) 
&cb->ssource);
+                       break;
                case 'P':
                        persistent_server = 1;
                        break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rdma-core-14-rc1-40-g706fc2af/librdmacm/man/rping.1 
new/rdma-core-14/librdmacm/man/rping.1
--- old/rdma-core-14-rc1-40-g706fc2af/librdmacm/man/rping.1     2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/librdmacm/man/rping.1      2017-05-30 05:47:40.000000000 
+0200
@@ -7,7 +7,7 @@
 .nf
 \fIrping\fR -s [-v] [-V] [-d] [-P] [-a address] [-p port]
                [-C message_count] [-S message_size]
-\fIrping\fR -c [-v] [-V] [-d] -a address [-p port]
+\fIrping\fR -c [-v] [-V] [-d] [-I address] -a address [-p port]
                [-C message_count] [-S message_size]
 .fi
 .SH "DESCRIPTION"
@@ -27,6 +27,10 @@
 To bind to any address with IPv6 use -a ::0 .
 On the client, specifies the server address to connect to.
 .TP
+\-I address
+The address to bind to as the source IP address to use. This is useful
+if you have multiple addresses on the same network or complex routing.
+.TP
 \-p
 Port number for listening server.
 .TP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rdma-core-14-rc1-40-g706fc2af/rdma-core.spec 
new/rdma-core-14/rdma-core.spec
--- old/rdma-core-14-rc1-40-g706fc2af/rdma-core.spec    2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/rdma-core.spec     2017-05-30 05:47:40.000000000 +0200
@@ -1,5 +1,5 @@
 Name: rdma-core
-Version: 13
+Version: 14
 Release: 1%{?dist}
 Summary: RDMA core userspace libraries and daemons
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/rdma-core-14-rc1-40-g706fc2af/redhat/rdma-core.spec 
new/rdma-core-14/redhat/rdma-core.spec
--- old/rdma-core-14-rc1-40-g706fc2af/redhat/rdma-core.spec     2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/redhat/rdma-core.spec      2017-05-30 05:47:40.000000000 
+0200
@@ -1,5 +1,5 @@
 Name: rdma-core
-Version: 13
+Version: 14
 Release: 1%{?dist}
 Summary: RDMA core userspace libraries and daemons
 
@@ -273,9 +273,6 @@
 install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/
 install -D -m0644 redhat/ibacm.service %{buildroot}%{_unitdir}/
 
-# srp_daemon
-install -D -m0644 redhat/srp_daemon.service %{buildroot}%{_unitdir}/
-
 # Delete the package's init.d scripts
 rm -rf %{buildroot}/%{_initrddir}/
 
@@ -403,6 +400,7 @@
 
 %files -n libibumad
 %{_libdir}/libibumad*.so.*
+%{_udevrulesdir}/libibumad.rules
 
 %files -n librdmacm
 %{_libdir}/librdmacm*.so.*
@@ -441,11 +439,15 @@
 
 %files -n srp_daemon
 %config(noreplace) %{_sysconfdir}/srp_daemon.conf
+%{_libexecdir}/srp_daemon/start_on_all_ports
 %{_unitdir}/srp_daemon.service
+%{_unitdir}/[email protected]
 %{_sbindir}/ibsrpdm
 %{_sbindir}/srp_daemon
-%{_sbindir}/srp_daemon.sh
 %{_sbindir}/run_srp_daemon
+%{_udevrulesdir}/srp_daemon.rules
 %{_mandir}/man1/ibsrpdm.1*
 %{_mandir}/man1/srp_daemon.1*
+%{_mandir}/man5/srp_daemon.service.5*
+%{_mandir}/man5/[email protected]*
 %doc %{_docdir}/%{name}-%{version}/ibsrpdm.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/redhat/srp_daemon.service 
new/rdma-core-14/redhat/srp_daemon.service
--- old/rdma-core-14-rc1-40-g706fc2af/redhat/srp_daemon.service 2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/redhat/srp_daemon.service  1970-01-01 01:00:00.000000000 
+0100
@@ -1,17 +0,0 @@
-[Unit]
-Description=Start or stop the daemon that attaches to SRP devices
-Documentation=man:srp_daemon file:/etc/rdma/rdma.conf file:/etc/srp_daemon.conf
-DefaultDependencies=false
-Conflicts=emergency.target emergency.service
-Requires=rdma.service
-Wants=opensm.service
-After=rdma.service opensm.service
-After=network.target
-Before=remote-fs-pre.target
-
-[Service]
-Type=simple
-ExecStart=/usr/sbin/srp_daemon.sh
-
-[Install]
-WantedBy=remote-fs-pre.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/CMakeLists.txt 
new/rdma-core-14/srp_daemon/CMakeLists.txt
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/CMakeLists.txt 2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/srp_daemon/CMakeLists.txt  2017-05-30 05:47:40.000000000 
+0200
@@ -3,6 +3,8 @@
 rdma_man_pages(
   ibsrpdm.1
   srp_daemon.1.in
+  srp_daemon.service.5
+  [email protected]
   )
 
 rdma_sbin_executable(srp_daemon
@@ -25,8 +27,24 @@
   RENAME "srp_daemon.sh"
   PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE 
GROUP_EXECUTE WORLD_EXECUTE)
 
+install(FILES start_on_all_ports
+  DESTINATION "${CMAKE_INSTALL_LIBEXECDIR}/srp_daemon"
+  PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE 
GROUP_EXECUTE WORLD_EXECUTE)
+
+rdma_subst_install(FILES srp_daemon.service.in
+  DESTINATION "${CMAKE_INSTALL_SYSTEMD_SERVICEDIR}"
+  RENAME srp_daemon.service
+  PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
+
+rdma_subst_install(FILES [email protected]
+  DESTINATION "${CMAKE_INSTALL_SYSTEMD_SERVICEDIR}"
+  RENAME [email protected]
+  PERMISSIONS OWNER_WRITE OWNER_READ GROUP_READ WORLD_READ)
+
 install(FILES srp_daemon.conf DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}")
 
+install(FILES srp_daemon.rules DESTINATION "${CMAKE_INSTALL_UDEV_RULESDIR}")
+
 # FIXME: The ib init.d file should really be included in rdma-core as well.
 set(RDMA_SERVICE "openibd" CACHE STRING "init.d file service name to order 
srpd after")
 # NOTE: These defaults are for CentOS, packagers should override.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.1.in 
new/rdma-core-14/srp_daemon/srp_daemon.1.in
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.1.in        
2017-05-13 12:42:30.000000000 +0200
+++ new/rdma-core-14/srp_daemon/srp_daemon.1.in 2017-05-30 05:47:40.000000000 
+0200
@@ -5,18 +5,30 @@
 srp_daemon \- Discovers SRP targets in an InfiniBand Fabric
 
 .SH SYNOPSIS
-.B srp_daemon [-vVcaeon] [-d \fIumad-device\fR | -i \fIinfiniband-device\fR 
[-p \fIport-num\fR]] [-t \fItimeout(ms)\fR] [-r \fIretries\fR] [-R 
\fIRescan-time\fR] [-f \fIrules-File\fR]
+.B srp_daemon\fR [\fB-vVcaeon\fR] [\fB-d \fIumad-device\fR | \fB-i 
\fIinfiniband-device\fR [\fB-p \fIport-num\fR] | \fB-j \fIdev:port\fR] [\fB-t 
\fItimeout(ms)\fR] [\fB-r \fIretries\fR] [\fB-R \fIrescan-time\fR] [\fB-f 
\fIrules-file\fR]
 
 
 .SH DESCRIPTION
 .PP
 Discovers and connects to InfiniBand SCSI RDMA Protocol (SRP) targets in an IB 
fabric.
 
-Each srp_daemon instance operates on one local port. Upon boot it performs a 
full rescan of the fabric then waits for an srp_daemon event. An srp_daemon 
event can be a join of a new machine to the fabric, a change in the 
capabilities of a machine, an SA change, or an expiration of a predefined 
timeout.
-
-When a new machine joins the fabric, srp_daemon checks if it is a target. When 
there is a change of capabilities, srp_daemon checks if the machine has turned 
into a target. When there is an SA change or a timeout expiration, srp_daemon 
performs a full rescan of the fabric.
-
-For each target srp_daemon finds, it checks if it should connect to this 
target according to its rules (default rules file is 
@CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf) and if it is already connected 
to the local port. If it should connect to this target and if it is not 
connected yet, srp_daemon can either print the target details or connect to it.
+Each srp_daemon instance operates on one local port. Upon boot it performs a
+full rescan of the fabric and then waits for an srp_daemon event. An
+srp_daemon event can be a join of a new machine to the fabric, a change in the
+capabilities of a machine, an SA change, or an expiration of a predefined
+timeout.
+
+When a new machine joins the fabric, srp_daemon checks if it is an SRP
+target. When there is a change of capabilities, srp_daemon checks if the
+machine has turned into an SRP target. When there is an SA change or a timeout
+expiration, srp_daemon performs a full rescan of the fabric.
+
+For each target srp_daemon finds, it checks if it should connect to this
+target according to its rules (the default rules file is
+@CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf) and if it is already
+connected to the local port. If it should connect to this target and if it is
+not connected yet, srp_daemon can either print the target details or connect
+to it.
 
 .SH OPTIONS
 
@@ -29,37 +41,45 @@
 Print even more verbose output (debug mode)
 .TP
 \fB\-i\fR \fIinfiniband-device\fR
-Work on \fIinfiniband-device\fR. This option should not be used with -d.
+Work on \fIinfiniband-device\fR. This option should not be used with -d nor
+with -j.
 .TP
 \fB\-p\fR \fIport-num\fR
-Work on port \fIport-num\fR (default 1). This option must be used with -i and 
should not be used with -d.
+Work on port \fIport-num\fR (default 1). This option must be used with -i and
+should not be used with -d nor with -j.
+.TP
+\fB\-j\fR \fIdev:port\fR
+Work on port number \fIport\fR of InfiniBand device \fIdev\fR. This option
+should not be used with -d, -i nor with -p.
 .TP
 \fB\-d\fR \fIumad-device\fR
-Use device file \fIumad-device\fR (default /dev/infiniband/umad0) This option 
should not be used with -i or -p.
+Use device file \fIumad-device\fR (default /dev/infiniband/umad0) This option
+should not be used with -i, -p nor with -j.
 .TP
 \fB\-c\fR
 Generate output suitable for piping directly to a
 /sys/class/infiniband_srp/srp\-<device>\-<port>/add_target file. 
 .TP
 \fB\-a\fR
-Prints all the targets in the fabric, not only targets that are not connected 
through the local port. (The same as ibsrpdm.)
+Prints all the targets in the fabric, not only targets that are not connected
+through the local port. This is the same behavior as that of ibsrpdm.
 .TP
 \fB\-e\fR
 Execute the connection command, i.e., make the connection to the target.
 .TP
 \fB\-o\fR
-Perform only one rescan and exit. (The same as ibsrpdm.)
+Perform only one rescan and exit just like ibsrpdm.
 .TP
-\fB\-R\fR \fIRescan-time\fR
-Force a complete rescan every \fIRescan-time\fR seconds. If -R is not 
specified, no timeout rescans will be performed.
+\fB\-R\fR \fIrescan-time\fR
+Force a complete rescan every \fIrescan-time\fR seconds. If -R is not 
specified, no timeout rescans will be performed.
 .TP
-\fB\-T\fR \fIretry-Timeout\fR
-Retries to connect to existing target after \fIretry-Timeout\fR seconds. If -R 
is not specified, uses 5 Seconds timeout. if retry-Timeout is 0, will not try 
to reconnect. The reason srp_daemon retries to connect to the target is because 
there may be a rare scnerio in which srp_daemon will try to connect to add a 
target when the target is about to be removed, but is not removed yet.
+\fB\-T\fR \fIretry-timeout\fR
+Retries to connect to existing target after \fIretry-timeout\fR seconds. If -R 
is not specified, uses 5 Seconds timeout. if retry-timeout is 0, will not try 
to reconnect. The reason srp_daemon retries to connect to the target is because 
there may be a rare scnerio in which srp_daemon will try to connect to add a 
target when the target is about to be removed, but is not removed yet.
 .TP
-\fB\-f\fR \fIrules-File\fR
-Decide to which targets to connect according to the rules in \fIrules-File\fR. 
+\fB\-f\fR \fIrules-file\fR
+Decide to which targets to connect according to the rules in \fIrules-file\fR.
 If \fB\-f\fR is not specified, uses the default rules file 
@CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf.
-Each line in the \fIrules-File\fR is a rule which can be either an allow 
connection or a disallow connection according to 
+Each line in the \fIrules-file\fR is a rule which can be either an allow 
connection or a disallow connection according to
 the first character in the line (a or d accordingly). The rest of the line is 
values for id_ext, ioc_guid, dgid, 
 service_id. Please take a look at the example section for an example of the 
file. srp_daemon decide whether to allow or disallow each target according  to 
first rule that match the target. If no rule matches the target, the target is 
allowed and will be connected. In an allow rule it is possible to set 
attributes for the connection to the target. Supported attributes are 
max_cmd_per_lun and max_sect.
 .TP
@@ -74,7 +94,7 @@
 
 .SH FILES
 @CMAKE_INSTALL_FULL_SYSCONFDIR@/srp_daemon.conf -
-Default rules configuration file that indicates to which targets to connect. 
Can be overridden using the \fB\-f\fR \fIrules-File\fR option. 
+Default rules configuration file that indicates to which targets to connect. 
Can be overridden using the \fB\-f\fR \fIrules-file\fR option.
 Each line in this file is a rule which can be either an allow connection or a 
disallow connection according to 
 the first character in the line (a or d accordingly). The rest of the line is 
values for id_ext, ioc_guid, dgid, 
 service_id. Please take a look at the example section for an example of the 
file. srp_daemon decide whether to allow or disallow each target according  to 
first rule that match the target. If no rule matches the target, the target is 
allowed and will be connected. In an allow rule it is possible to set 
attributes for the connection to the target. Supported attributes are 
max_cmd_per_lun and max_sect.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.c 
new/rdma-core-14/srp_daemon/srp_daemon.c
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.c   2017-05-13 
12:42:30.000000000 +0200
+++ new/rdma-core-14/srp_daemon/srp_daemon.c    2017-05-30 05:47:40.000000000 
+0200
@@ -226,6 +226,7 @@
        fprintf(stderr, "-d <umad device>       use umad Device \n");
        fprintf(stderr, "-i <infiniband device> use InfiniBand device \n");
        fprintf(stderr, "-p <port_num>          use Port num \n");
+       fprintf(stderr, "-j <dev>:<port_num>    use the IB dev / port_num 
combination \n");
        fprintf(stderr, "-R <rescan time>       perform complete Rescan every 
<rescan time> seconds\n");
        fprintf(stderr, "-T <retry timeout>     Retries to connect to existing 
target after Timeout of <retry timeout> seconds\n");
        fprintf(stderr, "-l <tl_retry timeout>  Transport retry count before 
failing IO. should be in range [2..7], (default 2)\n");
@@ -1623,7 +1624,7 @@
        while (1) {
                int c;
 
-               c = getopt(argc, argv, "caveod:i:p:t:r:R:T:l:Vhnf:");
+               c = getopt(argc, argv, "caveod:i:j:p:t:r:R:T:l:Vhnf:");
                if (c == -1)
                        break;
 
@@ -1645,6 +1646,19 @@
                                return -1;
                        }
                        break;
+               case 'j': {
+                       char dev[32];
+                       int port_num;
+
+                       if (sscanf(optarg, "%31[^:]:%d", dev, &port_num) != 2) {
+                               pr_err("Bad dev:port specification %s\n",
+                                      optarg);
+                               return -1;
+                       }
+                       conf->dev_name = strdup(dev);
+                       conf->port_num = port_num;
+                       }
+                       break;
                case 'c':
                        ++conf->cmd;
                        break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.rules 
new/rdma-core-14/srp_daemon/srp_daemon.rules
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.rules       
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/srp_daemon.rules        2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1 @@
+ACTION=="add", SUBSYSTEM=="infiniband_mad", PROGRAM:="/usr/bin/systemctl show 
srp_daemon -p ActiveState", RESULT=="ActiveState=active", 
ENV{SYSTEMD_WANTS}+="srp_daemon_port@$attr{ibdev}:$attr{port}.service"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.service.5 
new/rdma-core-14/srp_daemon/srp_daemon.service.5
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.service.5   
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/srp_daemon.service.5    2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1,30 @@
+'\" t
+.TH "SRP_DAEMON\&.SERVICE" "5" "" "srp_daemon" "srp_daemon.service"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
+srp_daemon.service \- srp_daemon systemd service that controls all ports
+.SH "SYNOPSIS"
+.PP
+srp_daemon\&.service
+.SH "DESCRIPTION"
+.PP
+The srp_daemon\&.service controls whether or not any srp_daemon processes are
+running. Although no srp_daemon processes are controlled directly by the
+srp_daemon\&.service, this service controls whether or not any
+srp_daemon_port@\&.service are allowed to be active. Each
+srp_daemon_port@\&.service controls one srp_daemon process.
+
+.SH "SEE ALSO"
+.PP
+\fBsrp_daemon\fR(1),
+\[email protected]\fR(5),
+\fBsystemctl\fR(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.service.in 
new/rdma-core-14/srp_daemon/srp_daemon.service.in
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.service.in  
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/srp_daemon.service.in   2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1,19 @@
+[Unit]
+Description=Daemon that discovers and logs in to SRP target systems
+Documentation=man:srp_daemon file:/etc/rdma/rdma.conf file:/etc/srp_daemon.conf
+DefaultDependencies=false
+Conflicts=emergency.target emergency.service
+Before=remote-fs-pre.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=@CMAKE_INSTALL_LIBEXECDIR@/srp_daemon/start_on_all_ports
+MemoryDenyWriteExecute=yes
+PrivateTmp=yes
+ProtectHome=yes
+ProtectKernelModules=yes
+RestrictRealtime=yes
+
+[Install]
+WantedBy=remote-fs-pre.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.sh.in 
new/rdma-core-14/srp_daemon/srp_daemon.sh.in
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/srp_daemon.sh.in       
2017-05-13 12:42:30.000000000 +0200
+++ new/rdma-core-14/srp_daemon/srp_daemon.sh.in        2017-05-30 
05:47:40.000000000 +0200
@@ -31,35 +31,35 @@
 shopt -s nullglob
 
 prog=@CMAKE_INSTALL_FULL_SBINDIR@/srp_daemon
-params=$@
+params=("$@")
 ibdir="/sys/class/infiniband"
 rescan_interval=60
-pids=""
-pidfile=@CMAKE_INSTALL_FULL_RUNDIR@/srp_daemon.sh.pid
+pids=()
+pidfile="@CMAKE_INSTALL_FULL_RUNDIR@/srp_daemon.sh.pid"
 mypid=$$
 
 trap_handler()
 {
-    if [ -n "$pids" ]; then
-        kill -15 $pids > /dev/null 2>&1
-        wait $pids
+    if [ "${#pids[@]}" ]; then
+        kill -15 "${pids[@]}" > /dev/null 2>&1
+        wait "${pids[@]}"
     fi
-    logger -i -t "$(basename $0)" "killing $prog."
-    /bin/rm -f $pidfile
+    logger -i -t "$(basename "$0")" "killing $prog."
+    /bin/rm -f "$pidfile"
     exit 0
 }
 
 # Check if there is another copy running of srp_daemon.sh
-if [ -f $pidfile ]; then
-    if [ -e /proc/$(cat $pidfile 2>/dev/null)/status ]; then
-        echo "$(basename $0) is already running. Exiting."
+if [ -f "$pidfile" ]; then
+    if [ -e "/proc/$(cat "$pidfile" 2>/dev/null)/status" ]; then
+        echo "$(basename "$0") is already running. Exiting."
         exit 1
     else
-        /bin/rm -f $pidfile
+        /bin/rm -f "$pidfile"
     fi
 fi
 
-if ! echo $mypid > $pidfile; then
+if ! echo $mypid > "$pidfile"; then
     echo "Creating $pidfile for pid $mypid failed"
     exit 1
 fi
@@ -72,12 +72,12 @@
 done
 
 for d in ${ibdir}_mad/umad*; do
-    hca_id="$(<$d/ibdev)"
-    port="$(<$d/port)"
+    hca_id="$(<"$d/ibdev")"
+    port="$(<"$d/port")"
     add_target="${ibdir}_srp/srp-${hca_id}-${port}/add_target"
     if [ -e "${add_target}" ]; then
-        ${prog} -e -c -n -i ${hca_id} -p ${port} -R ${rescan_interval} 
${params} >/dev/null 2>&1 &
-        pids="$pids $!"
+        ${prog} -e -c -n -i "${hca_id}" -p "${port}" -R "${rescan_interval}" 
"${params[@]}" >/dev/null 2>&1 &
+        pids+=($!)
     fi
 done
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/[email protected] 
new/rdma-core-14/srp_daemon/[email protected]
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/[email protected]     
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/[email protected]      2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1,49 @@
+'\" t
+.TH "SRP_DAEMON_PORT@\&.SERVICE" "5" "" "srp_daemon" "[email protected]"
+.\" -----------------------------------------------------------------
+.\" * set default formatting
+.\" -----------------------------------------------------------------
+.\" disable hyphenation
+.nh
+.\" disable justification (adjust text to left margin only)
+.ad l
+.\" -----------------------------------------------------------------
+.\" * MAIN CONTENT STARTS HERE *
+.\" -----------------------------------------------------------------
+.SH "NAME"
[email protected] \- srp_daemon_port@ systemd service that controls a
+single port
+.SH "SYNOPSIS"
+.PP
+srp_daemon_port@\&.service
+.SH "DESCRIPTION"
+.PP
+The srp_daemon_port@\&.service controls whether or not an srp_daemon process
+is monitoring the RDMA port specified as template argument. The format for the
+RDMA port name is \fIdev:port\fR where \fIdev\fR is the name of an RDMA device
+and \fIport\fR is an port number starting from one. Starting an instance of
+this template will start an srp_daemon process. Stopping an instance of this
+template will stop the srp_daemon process for the specified port. It can be
+prevented that srp_daemon is started for a certain port by masking the
+corresponding systemd service, e.g. \fBsystemctl mask
+srp_daemon_port@mlx4_0:1\fR.
+
+A list of all RDMA device and port number pairs can be obtained e.g. as 
follows:
+.PP
+.nf
+.RS
+$ (cd /sys/class/infiniband >&/dev/null && for p in */ports/*; do
+   [ -e "$p" ] && echo "${p/\\/ports\\//:}"; done)
+mlx4_0:1
+mlx4_0:2
+mlx4_1:1
+mlx4_1:2
+.RE
+.fi
+.PP
+
+.SH "SEE ALSO"
+.PP
+\fBsrp_daemon\fR(1),
+\fBsrp_daemon.service\fR(5),
+\fBsystemctl\fR(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/[email protected] 
new/rdma-core-14/srp_daemon/[email protected]
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/[email protected]    
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/[email protected]     2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1,24 @@
+[Unit]
+Description=SRP daemon that monitors port %i
+Documentation=man:srp_daemon file:/etc/rdma/rdma.conf file:/etc/srp_daemon.conf
+DefaultDependencies=false
+Conflicts=emergency.target emergency.service
+After=srp_daemon.service dev-infiniband-umad-%i.device network.target
+BindsTo=srp_daemon.service dev-infiniband-umad-%i.device
+Before=remote-fs-pre.target
+
+[Service]
+Type=simple
+ExecStart=@CMAKE_INSTALL_FULL_SBINDIR@/srp_daemon -e -c -n -j %I -R 60
+MemoryDenyWriteExecute=yes
+PrivateNetwork=yes
+PrivateTmp=yes
+ProtectControlGroups=yes
+ProtectHome=yes
+ProtectKernelModules=yes
+ProtectSystem=full
+RestrictRealtime=yes
+SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module @mount 
@obsolete @raw-io
+
+[Install]
+WantedBy=remote-fs-pre.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/start_on_all_ports 
new/rdma-core-14/srp_daemon/start_on_all_ports
--- old/rdma-core-14-rc1-40-g706fc2af/srp_daemon/start_on_all_ports     
1970-01-01 01:00:00.000000000 +0100
+++ new/rdma-core-14/srp_daemon/start_on_all_ports      2017-05-30 
05:47:40.000000000 +0200
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+for p in /sys/class/infiniband/*/ports/*; do
+    [ -e "$p" ] || continue
+    p=${p#/sys/class/infiniband/}
+    nohup /usr/bin/systemctl start "srp_daemon_port@${p/\/ports\//:}" 
</dev/null >&/dev/null &
+done


Reply via email to