[rds-devel] congestion map updates in case of loopback.

Pradeep pradeep at cup.hp.com
Thu Jul 31 17:27:10 PDT 2008


Hello,

Now that the loopback is handled by IB transport, is it really
required to send congestion map through the loopback connection
in the case where source and destination IPs are the same?
Shouldn't updating bits in the congestion map sufficient in this
case? Sending the bitmap through IB introduces a race condition
between a user process clearing a bit and "IB receive handler"
updating the congestion map, resulting in a corrupt bitmap array.

Here is some more details of the above scenario:

1. Port A hits congestion - set_bit and queue congestion map.
2. congestion map is sent through IB connection.
3. ISR processes congestion map - rds_ib_cong_recv()
4. Process does recvmsg() - this triggers clear_bit() and queueing
   cong map for send.
5. rds_ib_xmit() transmits cong map.

(3) could happen between (4) and (5). In that case the clear_bit()
done in step (4) is overwritten by (3) and is sent out in (5).

Thanks,
Pradeep




More information about the rds-devel mailing list