From 7c77c6a9bf9d71711dd3f89858bb0f5157a11919 Mon Sep 17 00:00:00 2001 From: Leon Romanovsky Date: Mon, 18 Feb 2019 22:25:48 +0200 Subject: RDMA/restrack: Prepare restrack_root to addition of extra fields per-type As a preparation to extension of rdma_restrack_root to provide software IDs, which will be per-type too. We convert the rdma_restrack_root from struct with arrays to array of structs. Such conversion allows us to drop rwsem lock in favour of internal XArray lock. Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe --- drivers/infiniband/core/restrack.h | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) (limited to 'drivers/infiniband/core/restrack.h') diff --git a/drivers/infiniband/core/restrack.h b/drivers/infiniband/core/restrack.h index cf89ef0b8ed5..09a1fbdf578e 100644 --- a/drivers/infiniband/core/restrack.h +++ b/drivers/infiniband/core/restrack.h @@ -7,33 +7,22 @@ #define _RDMA_CORE_RESTRACK_H_ #include -#include /** * struct rdma_restrack_root - main resource tracking management * entity, per-device */ struct rdma_restrack_root { - /* - * @rwsem: Read/write lock to protect erase of entry. - * Lists and insertions are protected by XArray internal lock. - */ - struct rw_semaphore rwsem; /** - * @xa: Array of XArray structures to hold restrack entries. - * We want to use array of XArrays because insertion is type - * dependent. For types with xisiting unique ID (like QPN), - * we will insert to that unique index. For other types, - * we insert based on pointers and auto-allocate unique index. + * @xa: Array of XArray structure to hold restrack entries. */ - struct xarray xa[RDMA_RESTRACK_MAX]; + struct xarray xa; /** * @next_id: Next ID to support cyclic allocation */ - u32 next_id[RDMA_RESTRACK_MAX]; + u32 next_id; }; - int rdma_restrack_init(struct ib_device *dev); void rdma_restrack_clean(struct ib_device *dev); #endif /* _RDMA_CORE_RESTRACK_H_ */ -- cgit v1.2.3-59-g8ed1b