[Pvfs2-cvs] commit by pw in pvfs2/src/io/bmi/bmi_ib: ib.c

CVS commit program cvs at parl.clemson.edu
Fri Feb 8 17:04:20 EST 2008


Update of /projects/cvsroot/pvfs2/src/io/bmi/bmi_ib
In directory parlweb1:/tmp/cvs-serv8911/src/io/bmi/bmi_ib

Modified Files:
	ib.c 
Log Message:
bmi_ib: only verify remote mop_ids for recv queue items that are
waiting for RTS_DONE messages.  The other side may have reused a
mop_id and now we have it in multiple rq->rts_mop_id, although no
more than one will ever be waiting for an RTS_DONE.


Index: ib.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/bmi/bmi_ib/ib.c,v
diff -u -p -p -u -r1.62 -r1.63
--- ib.c	5 Dec 2007 20:03:17 -0000	1.62
+++ ib.c	8 Feb 2008 22:04:19 -0000	1.63
@@ -6,7 +6,7 @@
  *
  * See COPYING in top-level directory.
  *
- * $Id: ib.c,v 1.62 2007/12/05 20:03:17 pw Exp $
+ * $Id: ib.c,v 1.63 2008/02/08 22:04:19 pw Exp $
  */
 #include <stdio.h>
 #include <stdlib.h>
@@ -217,8 +217,9 @@ static int ib_check_cq(void)
 		    assert(0, "%s: unknown send state %s (%d) of sq %p",
 		           __func__, sq_state_name(sq->state.send),
 			   sq->state.send, sq);
-		debug(2, "%s: send to %s completed locally: -> %s",
-		      __func__, bh->c->peername, sq_state_name(sq->state.send));
+		debug(2, "%s: send to %s completed locally: sq %p -> %s",
+		      __func__, bh->c->peername, sq,
+		      sq_state_name(sq->state.send));
 
 	    } else {
 		struct ib_work *rq = sq;  /* rename */
@@ -229,8 +230,9 @@ static int ib_check_cq(void)
 		else
 		    assert(0, "%s: unknown send state %s of rq %p",
 		           __func__, rq_state_name(rq->state.recv), rq);
-		debug(2, "%s: send to %s completed locally: -> %s",
-		      __func__, bh->c->peername, rq_state_name(rq->state.recv));
+		debug(2, "%s: send to %s completed locally: rq %p -> %s",
+		      __func__, bh->c->peername, rq,
+		      rq_state_name(rq->state.recv));
 	    }
 
 	    qlist_add_tail(&bh->list, &bh->c->eager_send_buf_free);
@@ -599,7 +601,8 @@ encourage_recv_incoming(struct buf_head 
 
 	rq = NULL;
 	qlist_for_each_entry(rqt, &ib_device->recvq, list) {
-	    if (rqt->c == c && rqt->rts_mop_id == mh_rts_done.mop_id) {
+	    if (rqt->c == c && rqt->rts_mop_id == mh_rts_done.mop_id &&
+		rqt->state.recv == RQ_RTS_WAITING_RTS_DONE) {
 		rq = rqt;
 		break;
 	    }
@@ -607,9 +610,6 @@ encourage_recv_incoming(struct buf_head 
 
 	assert(rq, "%s: mop_id %llx in RTS_DONE message not found",
 	       __func__, llu(mh_rts_done.mop_id));
-	assert(rq->state.recv == RQ_RTS_WAITING_RTS_DONE,
-	       "%s: RTS_DONE to rq wrong state %s",
-	       __func__, rq_state_name(rq->state.recv));
 
 #if MEMCACHE_BOUNCEBUF
 	memcpy_to_buflist(&rq->buflist, reg_recv_buflist_buf,



More information about the Pvfs2-cvs mailing list