Re: [PATCH net] rds: Make sure updates to cp_send_gen can be observed

From: Sowmini Varadhan
Date: Thu Jul 20 2017 - 07:03:13 EST


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