On (07/20/17 12:28), H??kon Bugge wrote:
> cp->cp_send_gen is treated as a normal variable, although it may be
> used by different threads.

I'm confused by that assertion. If you look at the comments right
above the change in your patch, there is a note that 
acquire_in_xmit/release_in_xmit are the synchronization/serialization 
points.

Can you please clarify?

> --- a/net/rds/send.c
> +++ b/net/rds/send.c
> @@ -170,8 +170,8 @@ int rds_send_xmit(struct rds_conn_path *cp)
>        * The acquire_in_xmit() check above ensures that only one
>        * caller can increment c_send_gen at any time.
>        */
> -     cp->cp_send_gen++;
> -     send_gen = cp->cp_send_gen;
> +     send_gen = READ_ONCE(cp->cp_send_gen) + 1;
> +     WRITE_ONCE(cp->cp_send_gen, send_gen);
>  

--Sowmini

Reply via email to