Messages in this thread | | | From | Leon Romanovsky <> | Subject | [PATCH rdma-next 00/14] Cleanup locking and events in ucma | Date | Tue, 18 Aug 2020 15:05:12 +0300 |
| |
From: Leon Romanovsky <leonro@nvidia.com>
From Jason:
Rework how the uevents for new connections are handled so all the locking ends up simpler and a work queue can be removed. This should also speed up destruction of ucma_context's as a flush_workqueue() was replaced with cancel_work_sync().
The simpler locking comes from narrowing what file->mut covers and moving other data to other locks, particularly by injecting the handler_mutex from the RDMA CM core as a construct available to ULPs. The handler_mutex directly prevents handlers from running without creating any ABBA locking problems.
Fix various error cases and data races caused by missing locking.
Thanks
Jason Gunthorpe (14): RDMA/ucma: Fix refcount 0 incr in ucma_get_ctx() RDMA/ucma: Remove unnecessary locking of file->ctx_list in close RDMA/ucma: Consolidate the two destroy flows RDMA/ucma: Fix error cases around ucma_alloc_ctx() RDMA/ucma: Remove mc_list and rely on xarray RDMA/cma: Add missing locking to rdma_accept() RDMA/ucma: Do not use file->mut to lock destroying RDMA/ucma: Fix the locking of ctx->file RDMA/ucma: Fix locking for ctx->events_reported RDMA/ucma: Add missing locking around rdma_leave_multicast() RDMA/ucma: Change backlog into an atomic RDMA/ucma: Narrow file->mut in ucma_event_handler() RDMA/ucma: Rework how new connections are passed through event delivery RDMA/ucma: Remove closing and the close_wq
drivers/infiniband/core/cma.c | 25 +- drivers/infiniband/core/ucma.c | 444 +++++++++++++++------------------ include/rdma/rdma_cm.h | 5 + 3 files changed, 226 insertions(+), 248 deletions(-)
-- 2.26.2
| |