<div style="color:#000; font-size: 14px;font-family: arial;"><div>The reason causing the client blocking at recvmsg is the loop condition of do {} while(),&nbsp;<br></div><div>because the parameter of count (-C number) on the client side could not be passed to the server side,</div><div>the server side only executes sendmsg once.</div><div><br></div><div><br></div></div><!-- jy5ContentSuffix --><div>----- 转发邮件信息 -----</div><div><strong>发件人:</strong> "Chen Nai"&lt;chennai1982@126.com&gt;</div><div><strong>发送时间:</strong> 2015年10月30 星期五 15:33</div><div><strong>收件人:</strong> "rds-devel"&lt;rds-devel@oss.oracle.com&gt;</div><div><strong>主题:</strong> rds-sample can't</div><div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;">Hi, all:</div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;">I am using rds-sample.c (/usr/share/doc/rds-tools-2.0.7/examples/rds-sample.c) to test RDS RDMA message send/recv function.</div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;">On the server side, I run:</div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div><div><div>[root@dbtce01 app_rds]# ./sample -s 172.16.10.99 -v</div><div>server listening on 172.16.10.99</div><div>Received RDS RDMA packet 0 of len 104, cmsg len 24, on port 4000</div><div>payload contains: 40 &nbsp;IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!"#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGH</div><div>Received RDS RDMA packet 1 of len 104, cmsg len 24, on port 4000</div><div>do_rdma_read: Error sending message: -1 107</div><div><br></div><div>1 packets received</div></div><div>Then on the client side, run:</div><div>[root@dbnode01 app_rds]# ./sample -s 172.16.10.99 -c 172.16.10.102 -C 40 -rr -v</div><div>Client Sending RDMA message 0 from 172.16.10.102 to 172.16.10.99</div><div>Client Sending RDMA message 1 from 172.16.10.102 to 172.16.10.99</div><div>^C</div><div>Then the client side hung like this until ctrl+C is pressed.</div><div>I found that the client process is blocking at recvmsg as belows:</div><div><div>[root@dbnode01 ~]# ps -ef | grep sample</div><div>root &nbsp; &nbsp; &nbsp;7712 &nbsp;5664 &nbsp;0 15:32 pts/0 &nbsp; &nbsp;00:00:00 ./sample -s 172.16.10.99 -c 172.16.10.102 -C 4 -rr -v</div><div>root &nbsp; &nbsp; &nbsp;7715 &nbsp;7442 &nbsp;0 15:32 pts/1 &nbsp; &nbsp;00:00:00 grep sample</div><div>[root@dbnode01 ~]# strace -p 7712</div><div>Process 7712 attached - interrupt to quit</div><div>recvmsg(3,&nbsp;</div></div><div>So what's the matter for RDMA message? While RDS regular messages are transmitted and received successfully.</div><div>Thanks.</div><div style="color: rgb(0, 0, 0); font-family: arial; font-size: 14px;"><br></div></div><div><br><br><span title="neteasefooter"><p>&nbsp;</p></span></div><br><br><span title="neteasefooter"><p>&nbsp;</p></span>