On Tue, Aug 18, 2020 at 03:05:12PM +0300, Leon Romanovsky wrote: > From: Leon Romanovsky <leonro@xxxxxxxxxx> > > >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 Applied to for-next Jason