svn commit: r273811 - head/contrib/ofed/librdmacm/examples

Anthony Cornehl accornehl at fastmail.fm
Wed Oct 29 06:34:35 UTC 2014


On October 28, 2014 11:24:13 PM PDT, Navdeep Parhar <np at FreeBSD.org> wrote:
>Author: np
>Date: Wed Oct 29 06:24:12 2014
>New Revision: 273811
>URL: https://svnweb.freebsd.org/changeset/base/273811
>
>Log:
> rping: make sure that the CQ event thread can never poll a CQ after it
>  has been destroyed.
>  
>  Submitted by:	Hariprasad at Chelsio dot com
>  Sponsored by:	Chelsio Communications
>

Is this change present upstream? We really should be tracking the originating repositories when making changes in OFED packages, but the kernel and userspace is several years out of date from what OFED is tracking currently.

[1] http://git.openfabrics.org/?p=~shefty/librdmacm.git;a=summary

>Modified:
>  head/contrib/ofed/librdmacm/examples/rping.c
>
>Modified: head/contrib/ofed/librdmacm/examples/rping.c
>==============================================================================
>--- head/contrib/ofed/librdmacm/examples/rping.c	Wed Oct 29 04:32:46
>2014	(r273810)
>+++ head/contrib/ofed/librdmacm/examples/rping.c	Wed Oct 29 06:24:12
>2014	(r273811)
>@@ -40,7 +40,6 @@
> #include <netinet/in.h>
> #include <sys/socket.h>
> #include <netdb.h>
>-#include <byteswap.h>
> #include <semaphore.h>
> #include <arpa/inet.h>
> #include <pthread.h>
>@@ -280,10 +279,10 @@ static int rping_cq_event_handler(struct
> 		ret = 0;
> 
> 		if (wc.status) {
>-			fprintf(stderr, "cq completion failed status %d\n",
>-				wc.status);
> 			if (wc.status != IBV_WC_WR_FLUSH_ERR)
>-				ret = -1;
>+				fprintf(stderr, "cq completion failed status %d\n",
>+					wc.status);
>+			ret = -1;
> 			goto error;
> 		}
> 
>@@ -800,10 +799,9 @@ static void *rping_persistent_server_thr
> 
> 	rping_test_server(cb);
> 	rdma_disconnect(cb->child_cm_id);
>+	pthread_join(cb->cqthread, NULL);
> 	rping_free_buffers(cb);
> 	rping_free_qp(cb);
>-	pthread_cancel(cb->cqthread);
>-	pthread_join(cb->cqthread, NULL);
> 	rdma_destroy_id(cb->child_cm_id);
> 	free_cb(cb);
> 	return NULL;
>@@ -888,6 +886,7 @@ static int rping_run_server(struct rping
> 
> 	rping_test_server(cb);
> 	rdma_disconnect(cb->child_cm_id);
>+	pthread_join(cb->cqthread, NULL);
> 	rdma_destroy_id(cb->child_cm_id);
> err2:
> 	rping_free_buffers(cb);
>@@ -1053,9 +1052,16 @@ static int rping_run_client(struct rping
> 		goto err2;
> 	}
> 
>-	rping_test_client(cb);
>+	ret = rping_test_client(cb);
>+	if (ret) {
>+		fprintf(stderr, "rping client failed: %d\n", ret);
>+		goto err3;
>+	}
>+	ret = 0;
>+err3:
> 	rdma_disconnect(cb->cm_id);
> err2:
>+	pthread_join(cb->cqthread, NULL);
> 	rping_free_buffers(cb);
> err1:
> 	rping_free_qp(cb);
>_______________________________________________
>svn-src-head at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/svn-src-head
>To unsubscribe, send any mail to "svn-src-head-unsubscribe at freebsd.org"





More information about the svn-src-all mailing list