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

Andy Grover andy.grover at oracle.com
Wed Oct 1 12:07:01 PDT 2008


> 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).

Looking at fixing this.

But, can someone tell me why loopback uses IB? The changeset checkin
comment says it's to test rds and rds-rdma on standalone machines, which
sounds a little flimsy to me, given the complexity & bugs it's adding.

Regards -- Andy



More information about the rds-devel mailing list