[librdmacm] Update to latest upstream

Doug Ledford dledford at fedoraproject.org
Tue Jan 3 18:52:45 UTC 2012


commit 4b6b9bbec9fc60c71d91c41e3cdf89d90cedc4b3
Author: Doug Ledford <dledford at redhat.com>
Date:   Tue Jan 3 13:43:47 2012 -0500

    Update to latest upstream
    
    Signed-off-by: Doug Ledford <dledford at redhat.com>

 .gitignore                                         |    1 +
 ...ma-verbs-Fix-race-polling-for-completions.patch |  109 ++++++++++++++++++++
 0002-librdmacm-Fix-duplicate-free-of-connect.patch |   40 +++++++
 0003-librdmacm-Verify-size-of-route_len.patch      |   85 +++++++++++++++
 ...udaddy-Fix-resource-leak-in-case-of-error.patch |   27 +++++
 ...nor-code-refactoring-when-saving-a-string.patch |   33 ++++++
 ...eturn-ECONNREFUSED-from-rdma_connect-on-r.patch |   37 +++++++
 ...ucmatose-allow-easy-setting-of-tos-in-hex.patch |   44 ++++++++
 ...dmacm-Update-web-site-and-email-addresses.patch |   26 +++++
 librdmacm.spec                                     |   32 +++++-
 sources                                            |    2 +-
 11 files changed, 430 insertions(+), 6 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 79fc9d9..873de08 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 librdmacm-1.0.7.tar.gz
 librdmacm-1.0.10.tar.gz
 librdmacm-1.0.14.1.tar.gz
+/librdmacm-1.0.15.tar.gz
diff --git a/0001-rdma-verbs-Fix-race-polling-for-completions.patch b/0001-rdma-verbs-Fix-race-polling-for-completions.patch
new file mode 100644
index 0000000..e9c9733
--- /dev/null
+++ b/0001-rdma-verbs-Fix-race-polling-for-completions.patch
@@ -0,0 +1,109 @@
+From e92afcbe5284095d55aad937b8c23333368d4d62 Mon Sep 17 00:00:00 2001
+From: Sean Hefty <sean.hefty at intel.com>
+Date: Fri, 16 Sep 2011 12:06:40 -0700
+Subject: [PATCH 1/9] rdma/verbs: Fix race polling for completions
+
+To avoid hanging in rdma_get_send/recv_comp, we need to rearm
+the CQ inside of the while loop.  If the CQ is armed,
+the HCA will write an entry to the CQ, then generate a CQ
+event.  However, a caller could poll the CQ, find the entry,
+then attempt to rearm the CQ before the HCA generates the CQ
+event.  In this case, the rearm call (ibv_req_notify_cq) will
+act as a no-op, since the HCA hasn't finished generating the
+event for the previous completion.  At this point, the event
+will be queued.
+
+A call to ibv_get_cq_event will find the event, but not
+a CQ entry.  The CQ is now not armed, and a call to
+ibv_get_cq_event will block waiting for an event that will
+never occur.
+
+Problem was found in an rdma_cm example test under development.
+The test can ping-pong messages between two applications.
+
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ include/rdma/rdma_verbs.h |   44 ++++++++++++++++++++++++++------------------
+ 1 files changed, 26 insertions(+), 18 deletions(-)
+
+diff --git a/include/rdma/rdma_verbs.h b/include/rdma/rdma_verbs.h
+index eca2c7a..2b1a961 100644
+--- a/include/rdma/rdma_verbs.h
++++ b/include/rdma/rdma_verbs.h
+@@ -254,23 +254,27 @@ rdma_get_send_comp(struct rdma_cm_id *id, struct ibv_wc *wc)
+ 	void *context;
+ 	int ret;
+ 
+-	ret = ibv_poll_cq(id->send_cq, 1, wc);
+-	if (ret)
+-		goto out;
++	do {
++		ret = ibv_poll_cq(id->send_cq, 1, wc);
++		if (ret)
++			break;
+ 
+-	ret = ibv_req_notify_cq(id->send_cq, 0);
+-	if (ret)
+-		return rdma_seterrno(ret);
++		ret = ibv_req_notify_cq(id->send_cq, 0);
++		if (ret)
++			return rdma_seterrno(ret);
++
++		ret = ibv_poll_cq(id->send_cq, 1, wc);
++		if (ret)
++			break;
+ 
+-	while (!(ret = ibv_poll_cq(id->send_cq, 1, wc))) {
+ 		ret = ibv_get_cq_event(id->send_cq_channel, &cq, &context);
+ 		if (ret)
+ 			return rdma_seterrno(ret);
+ 
+ 		assert(cq == id->send_cq && context == id);
+ 		ibv_ack_cq_events(id->send_cq, 1);
+-	}
+-out:
++	} while (1);
++
+ 	return (ret < 0) ? rdma_seterrno(ret) : ret;
+ }
+ 
+@@ -281,23 +285,27 @@ rdma_get_recv_comp(struct rdma_cm_id *id, struct ibv_wc *wc)
+ 	void *context;
+ 	int ret;
+ 
+-	ret = ibv_poll_cq(id->recv_cq, 1, wc);
+-	if (ret)
+-		goto out;
++	do {
++		ret = ibv_poll_cq(id->recv_cq, 1, wc);
++		if (ret)
++			break;
+ 
+-	ret = ibv_req_notify_cq(id->recv_cq, 0);
+-	if (ret)
+-		return rdma_seterrno(ret);
++		ret = ibv_req_notify_cq(id->recv_cq, 0);
++		if (ret)
++			return rdma_seterrno(ret);
++
++		ret = ibv_poll_cq(id->recv_cq, 1, wc);
++		if (ret)
++			break;
+ 
+-	while (!(ret = ibv_poll_cq(id->recv_cq, 1, wc))) {
+ 		ret = ibv_get_cq_event(id->recv_cq_channel, &cq, &context);
+ 		if (ret)
+ 			return rdma_seterrno(ret);
+ 
+ 		assert(cq == id->recv_cq && context == id);
+ 		ibv_ack_cq_events(id->recv_cq, 1);
+-	}
+-out:
++	} while (1);
++
+ 	return (ret < 0) ? rdma_seterrno(ret) : ret;
+ }
+ 
+-- 
+1.7.6.4
+
diff --git a/0002-librdmacm-Fix-duplicate-free-of-connect.patch b/0002-librdmacm-Fix-duplicate-free-of-connect.patch
new file mode 100644
index 0000000..a62f883
--- /dev/null
+++ b/0002-librdmacm-Fix-duplicate-free-of-connect.patch
@@ -0,0 +1,40 @@
+From 20cf9c7bff72c5c0ac1ec7c99dadb7e095875bc6 Mon Sep 17 00:00:00 2001
+From: Sean Hefty <sean.hefty at intel.com>
+Date: Tue, 27 Sep 2011 11:19:36 -0700
+Subject: [PATCH 2/9] librdmacm: Fix duplicate free of connect
+
+The connect data stored with the cma_id_private is freed in
+rdma_connect, since it is no longer needed.  Avoid duplicating
+the free in rdma_destroy_id by checking for connect_len = 0,
+rather than connect to be NULL.
+
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ src/cma.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/cma.c b/src/cma.c
+index 91e110e..e09ab99 100755
+--- a/src/cma.c
++++ b/src/cma.c
+@@ -379,7 +379,7 @@ static void ucma_free_id(struct cma_id_private *id_priv)
+ 
+ 	if (id_priv->sync)
+ 		rdma_destroy_event_channel(id_priv->id.channel);
+-	if (id_priv->connect)
++	if (id_priv->connect_len)
+ 		free(id_priv->connect);
+ 	free(id_priv);
+ }
+@@ -1319,7 +1319,7 @@ int rdma_connect(struct rdma_cm_id *id, struct rdma_conn_param *conn_param)
+ 	if (ret != sizeof cmd)
+ 		return (ret >= 0) ? ERR(ENODATA) : -1;
+ 
+-	if (id_priv->connect) {
++	if (id_priv->connect_len) {
+ 		free(id_priv->connect);
+ 		id_priv->connect_len = 0;
+ 	}
+-- 
+1.7.6.4
+
diff --git a/0003-librdmacm-Verify-size-of-route_len.patch b/0003-librdmacm-Verify-size-of-route_len.patch
new file mode 100644
index 0000000..9f36fec
--- /dev/null
+++ b/0003-librdmacm-Verify-size-of-route_len.patch
@@ -0,0 +1,85 @@
+From b17cbf0636dc8bbe786c2055405e23104b513887 Mon Sep 17 00:00:00 2001
+From: Sean Hefty <sean.hefty at intel.com>
+Date: Tue, 27 Sep 2011 23:22:21 -0700
+Subject: [PATCH 3/9] librdmacm: Verify size of route_len
+
+If the user specifies route information on input to rdma_getaddrinfo,
+verify that the size of the routing data is something that we're
+prepared to handle.
+
+The routing data is only useful if IB ACM is enabled and may be
+either struct ibv_path_record or struct ibv_path_data on input.
+
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ man/rdma_getaddrinfo.3 |   13 +++++++++++--
+ src/acm.c              |   19 +++++++++++++++----
+ 2 files changed, 26 insertions(+), 6 deletions(-)
+
+diff --git a/man/rdma_getaddrinfo.3 b/man/rdma_getaddrinfo.3
+index e69d8ce..31c233d 100755
+--- a/man/rdma_getaddrinfo.3
++++ b/man/rdma_getaddrinfo.3
+@@ -28,10 +28,15 @@ RDMA functional equivalent to getaddrinfo.
+ Returns 0 on success, or -1 on error.  If an error occurs, errno will be
+ set to indicate the failure reason.
+ .SH "NOTES"
+-Either node or service must be provided.  If hints are provided, the
++Either node, service, or hints must be provided.  If hints are provided, the
+ operation will be controlled by hints.ai_flags.  If RAI_PASSIVE is
+ specified, the call will resolve address information for use on the
+ passive side of a connection.
++If node is provided, rdma_getaddrinfo will attempt to resolve the RDMA address,
++route, and connection data to the given node.  The hints parameter, if provided,
++may be used to control the resulting output as indicated below.
++If node is not given, rdma_getaddrinfo will attempt to resolve the RDMA addressing
++information based on the hints.ai_src_addr, hints.ai_dst_addr, or hints.ai_route.
+ .SH "rdma_addrinfo"
+ .IP "ai_flags" 12
+ Hint flags that control the operation.  Supported flags are:
+@@ -74,7 +79,11 @@ could be resolved.
+ Routing information for RDMA transports that require routing data as part
+ of connection establishment.  The format of the routing data depends on
+ the underlying transport.  If Infiniband transports are
+-used, ai_route will reference an array of struct ibv_path_data.
++used, ai_route will reference an array of struct ibv_path_data on output,
++if routing data is available.  Routing paths may be restricted by setting
++desired routing data fields on input to rdma_getaddrinfo.  For Infiniband,
++hints.ai_route may reference an array of struct ibv_path_record or
++struct ibv_path_data on input.
+ .IP "ai_connect_len" 12
+ Size of connection information referenced by ai_connect.  This will be
+ 0 if the underlying transport does not require additional connection
+diff --git a/src/acm.c b/src/acm.c
+index 1fa6c62..00e0043 100755
+--- a/src/acm.c
++++ b/src/acm.c
+@@ -300,10 +300,21 @@ void ucma_ib_resolve(struct rdma_addrinfo *rai, struct rdma_addrinfo *hints)
+ 	}
+ 
+ 	if (hints && hints->ai_route_len) {
+-		data->type = ACM_EP_INFO_PATH;
+-		memcpy(&data->info.path, hints->ai_route, hints->ai_route_len);
+-		data++;
+-		msg.hdr.length += ACM_MSG_EP_LENGTH;
++		struct ibv_path_record *path;
++
++		if (hints->ai_route_len == sizeof(struct ibv_path_record))
++			path = (struct ibv_path_record *) hints->ai_route;
++		else if (hints->ai_route_len == sizeof(struct ibv_path_data))
++			path = &((struct ibv_path_data *) hints->ai_route)->path;
++		else
++			path = NULL;
++
++		if (path) {
++			data->type = ACM_EP_INFO_PATH;
++			memcpy(&data->info.path, path, sizeof(*path));
++			data++;
++			msg.hdr.length += ACM_MSG_EP_LENGTH;
++		}
+ 	}
+ 
+ 	pthread_mutex_lock(&acm_lock);
+-- 
+1.7.6.4
+
diff --git a/0004-librdmacm-udaddy-Fix-resource-leak-in-case-of-error.patch b/0004-librdmacm-udaddy-Fix-resource-leak-in-case-of-error.patch
new file mode 100644
index 0000000..04a4ea0
--- /dev/null
+++ b/0004-librdmacm-udaddy-Fix-resource-leak-in-case-of-error.patch
@@ -0,0 +1,27 @@
+From 934d3e3c98d07c3d872f7eeb1d935c9708474838 Mon Sep 17 00:00:00 2001
+From: Dotan Barak <dotanb at dev.mellanox.co.il>
+Date: Wed, 26 Oct 2011 07:19:25 -0700
+Subject: [PATCH 4/9] librdmacm/udaddy: Fix resource leak in case of error
+
+Signed-off-by: Dotan Barak <dotanb at dev.mellanox.co.il>
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ examples/udaddy.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/examples/udaddy.c b/examples/udaddy.c
+index 637306a..1534df5 100644
+--- a/examples/udaddy.c
++++ b/examples/udaddy.c
+@@ -547,7 +547,7 @@ static int run_server(void)
+ 	ret = rdma_bind_addr(listen_id, test.src_addr);
+ 	if (ret) {
+ 		perror("udaddy: bind address failed");
+-		return ret;
++		goto out;
+ 	}
+ 
+ 	ret = rdma_listen(listen_id, 0);
+-- 
+1.7.6.4
+
diff --git a/0006-rdma-cma-minor-code-refactoring-when-saving-a-string.patch b/0006-rdma-cma-minor-code-refactoring-when-saving-a-string.patch
new file mode 100644
index 0000000..5cbb6af
--- /dev/null
+++ b/0006-rdma-cma-minor-code-refactoring-when-saving-a-string.patch
@@ -0,0 +1,33 @@
+From 404c828cadf8a5370c80d0edffc4f23c97e229f2 Mon Sep 17 00:00:00 2001
+From: Dotan Barak <dotanb at dev.mellanox.co.il>
+Date: Mon, 31 Oct 2011 08:53:07 -0700
+Subject: [PATCH 6/9] rdma/cma: minor code refactoring when saving a string
+ content
+
+In this case, using strdup will provide a cleaner code
+(and maybe a little bit faster too).
+
+Signed-off-by: Dotan Barak <dotanb at dev.mellanox.co.il>
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ src/addrinfo.c |    4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+diff --git a/src/addrinfo.c b/src/addrinfo.c
+index 695430b..34c7fb4 100755
+--- a/src/addrinfo.c
++++ b/src/addrinfo.c
+@@ -137,9 +137,7 @@ static int ucma_convert_to_rai(struct rdma_addrinfo *rai,
+ 	if (!addr)
+ 		return ERR(ENOMEM);
+ 
+-	canonname = ai->ai_canonname ? malloc(strlen(ai->ai_canonname) + 1) : NULL;
+-	if (canonname)
+-		strcpy(canonname, ai->ai_canonname);
++	canonname = ai->ai_canonname ? strdup(ai->ai_canonname) : NULL;
+ 
+ 	memcpy(addr, ai->ai_addr, ai->ai_addrlen);
+ 	if (ai->ai_flags & RAI_PASSIVE) {
+-- 
+1.7.6.4
+
diff --git a/0007-librdmacm-Return-ECONNREFUSED-from-rdma_connect-on-r.patch b/0007-librdmacm-Return-ECONNREFUSED-from-rdma_connect-on-r.patch
new file mode 100644
index 0000000..584aeb1
--- /dev/null
+++ b/0007-librdmacm-Return-ECONNREFUSED-from-rdma_connect-on-r.patch
@@ -0,0 +1,37 @@
+From 7a79fba60be15e562e688bce211715ebe35c69b1 Mon Sep 17 00:00:00 2001
+From: Sean Hefty <sean.hefty at intel.com>
+Date: Tue, 22 Nov 2011 17:17:04 -0800
+Subject: [PATCH 7/9] librdmacm: Return ECONNREFUSED from rdma_connect on
+ reject
+
+Make the errno return code from rdma_connect constistent with
+connect.  The underlying status value is available by reading
+the event data.
+
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ src/cma.c |    8 ++++++--
+ 1 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/cma.c b/src/cma.c
+index e09ab99..4a0bde9 100755
+--- a/src/cma.c
++++ b/src/cma.c
+@@ -761,8 +761,12 @@ static int ucma_complete(struct cma_id_private *id_priv)
+ 	if (ret)
+ 		return ret;
+ 
+-	if (id_priv->id.event->status)
+-		ret = ERR(id_priv->id.event->status);
++	if (id_priv->id.event->status) {
++		if (id_priv->id.event->event == RDMA_CM_EVENT_REJECTED)
++			ret = ERR(ECONNREFUSED);
++		else
++			ret = ERR(id_priv->id.event->status);
++	}
+ 	return ret;
+ }
+ 
+-- 
+1.7.6.4
+
diff --git a/0008-udaddy-ucmatose-allow-easy-setting-of-tos-in-hex.patch b/0008-udaddy-ucmatose-allow-easy-setting-of-tos-in-hex.patch
new file mode 100644
index 0000000..5b029d2
--- /dev/null
+++ b/0008-udaddy-ucmatose-allow-easy-setting-of-tos-in-hex.patch
@@ -0,0 +1,44 @@
+From 1405b8e9c60d7e98ca099148cfcb6fef45dd2494 Mon Sep 17 00:00:00 2001
+From: Or Gerlitz <ogerlitz at mellanox.com>
+Date: Mon, 12 Dec 2011 11:23:59 -0800
+Subject: [PATCH 8/9] udaddy/ucmatose: allow easy setting of tos in hex
+
+Under IBoE, the 3 MSBits of the TOS map to the SL, hence letting
+the user to specify them in hex makes the interface friendlier.
+
+Signed-off-by: Or Gerlitz <ogerlitz at mellanox.com>
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ examples/cmatose.c |    2 +-
+ examples/udaddy.c  |    2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/examples/cmatose.c b/examples/cmatose.c
+index 82e0d7c..3f2ff03 100644
+--- a/examples/cmatose.c
++++ b/examples/cmatose.c
+@@ -702,7 +702,7 @@ int main(int argc, char **argv)
+ 			break;
+ 		case 't':
+ 			set_tos = 1;
+-			tos = (uint8_t) atoi(optarg);
++			tos = (uint8_t) strtoul(optarg, NULL, 0);
+ 			break;
+ 		case 'p':
+ 			port = atoi(optarg);
+diff --git a/examples/udaddy.c b/examples/udaddy.c
+index 637306a..a07f657 100644
+--- a/examples/udaddy.c
++++ b/examples/udaddy.c
+@@ -655,7 +655,7 @@ int main(int argc, char **argv)
+ 			break;
+ 		case 't':
+ 			set_tos = 1;
+-			tos = (uint8_t) atoi(optarg);
++			tos = (uint8_t) strtoul(optarg, NULL, 0);
+ 			break;
+ 		case 'p':
+ 			port_space = strtol(optarg, NULL, 0);
+-- 
+1.7.6.4
+
diff --git a/0009-librdmacm-Update-web-site-and-email-addresses.patch b/0009-librdmacm-Update-web-site-and-email-addresses.patch
new file mode 100644
index 0000000..d37cb25
--- /dev/null
+++ b/0009-librdmacm-Update-web-site-and-email-addresses.patch
@@ -0,0 +1,26 @@
+From 870bcbda2f01f801bbbabfd3c4b2956f79572d9b Mon Sep 17 00:00:00 2001
+From: Sean Hefty <sean.hefty at intel.com>
+Date: Wed, 14 Dec 2011 16:38:45 -0800
+Subject: [PATCH 9/9] librdmacm: Update web site and email addresses
+
+Signed-off-by: Sean Hefty <sean.hefty at intel.com>
+---
+ configure.in |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/configure.in b/configure.in
+index 03dbed8..8d89741 100644
+--- a/configure.in
++++ b/configure.in
+@@ -1,7 +1,7 @@
+ dnl Process this file with autoconf to produce a configure script.
+ 
+ AC_PREREQ(2.57)
+-AC_INIT(librdmacm, 1.0.15, general at lists.openfabrics.org)
++AC_INIT(librdmacm, 1.0.15, linux-rdma at vger.kernel.org)
+ AC_CONFIG_SRCDIR([src/cma.c])
+ AC_CONFIG_AUX_DIR(config)
+ AC_CONFIG_MACRO_DIR(config)
+-- 
+1.7.6.4
+
diff --git a/librdmacm.spec b/librdmacm.spec
index b63224c..6f80169 100644
--- a/librdmacm.spec
+++ b/librdmacm.spec
@@ -1,14 +1,22 @@
 Name: librdmacm
-Version: 1.0.14.1
+Version: 1.0.15
 Release: 1%{?dist}
 Summary: Userspace RDMA Connection Manager
 Group: System Environment/Libraries
 License: GPLv2 or BSD
 Url: http://www.openfabrics.org/
 Source: http://www.openfabrics.org/downloads/rdmacm/%{name}-%{version}.tar.gz
+Patch1: 0001-rdma-verbs-Fix-race-polling-for-completions.patch
+Patch2: 0002-librdmacm-Fix-duplicate-free-of-connect.patch
+Patch3: 0003-librdmacm-Verify-size-of-route_len.patch
+Patch4: 0004-librdmacm-udaddy-Fix-resource-leak-in-case-of-error.patch
+Patch6: 0006-rdma-cma-minor-code-refactoring-when-saving-a-string.patch
+Patch7: 0007-librdmacm-Return-ECONNREFUSED-from-rdma_connect-on-r.patch
+Patch8: 0008-udaddy-ucmatose-allow-easy-setting-of-tos-in-hex.patch
+Patch9: 0009-librdmacm-Update-web-site-and-email-addresses.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 ExcludeArch: s390 s390x
-BuildRequires: libibverbs-devel > 1.1.4
+BuildRequires: libibverbs-devel > 1.1.4, chrpath
 
 %description
 librdmacm provides a userspace RDMA Communication Managment API.
@@ -38,6 +46,14 @@ Example test programs for the librdmacm library.
 
 %prep
 %setup -q
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
 
 %build
 %configure LDFLAGS=-lpthread
@@ -46,13 +62,15 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
 make %{?_smp_mflags}
 
 %install
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 %makeinstall
 # remove unpackaged files from the buildroot
-rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
+rm -f %{buildroot}%{_libdir}/*.la
+# kill rpaths
+chrpath -d %{buildroot}%{_bindir}/*
 
 %clean
-rm -rf $RPM_BUILD_ROOT
+rm -rf %{buildroot}
 
 %post -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
@@ -79,6 +97,10 @@ rm -rf $RPM_BUILD_ROOT
 %{_mandir}/man1/*
 
 %changelog
+* Tue Jan 03 2012 Doug Ledford <dledford at redhat.com> - 1.0.15-1
+- Update to latest upstream tarball
+- Add in latest git commits as patches
+
 * Wed Jul 20 2011 Doug Ledford <dledford at redhat.com> - 1.0.14.1-1
 - Update to latest upstream release
 - Rebuild against latest libibverbs
diff --git a/sources b/sources
index 6f3ea25..6271fef 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-bc3cc06b808ab6096b5c0937f54a8dbd  librdmacm-1.0.14.1.tar.gz
+0053fd9a7368f04e72287923eb58ea36  librdmacm-1.0.15.tar.gz


More information about the scm-commits mailing list