You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We need to add krefs to struct rds_connection to make
connection destroy/reaping safer and this encompasses
the following code changes:
rds_conn_create() does a kref_init() when a new connection
is created. Transports (rds_rdma, rds_tcp, loopback) will now
call rds_conn_destroy_init() as the destroy conn mechanism is
split into two phases of init (quiesce) and fini (free).
In the first destroy_init/quiesce phase all worker threads
are cancelled and pending messages are dropped/torn-down.
The second free phase begins when the conn->c_refcount
drops to 0 and rds_conn_destroy_fini() is called by the
kref callback.
kref coverage via rds_conn_get()/rds_conn_put()
includes the following class of functions:
- rds_conn_lookup(), rds_conn_laddr_list(),
rds_conn_drop_sock_cancel_worker(), rds_conn_ha_changed_task(),
rds_send_worker(), rds_recv_worker(), rds_hb_worker().
- af_rds: rds(6)_user_reset(), rds_sock->rs_conn/rds_sock_put().
- congestion: rds_cong_{add,remove}_conn().
- send & recv: rds_sendmsg(), qp & cm_id contexts.
- All callers of rds_conn_create().
Orabug: 38118655
Reviewed-by: Gerd Rausch <[email protected]>
Signed-off-by: Sharath Srinivasan <[email protected]>
Signed-off-by: Vijayendra Suman <[email protected]>
0 commit comments