mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
RDMA/restrack: Reduce scope of synchronization lock while updating DB
XArray uses internal lock for updates to XArray. This means that our external RW lock is needed to ensure that entry is not deleted while we are performing iteration over list. Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
c5dfe0ea6f
commit
4811852718
@ -210,13 +210,11 @@ static void rdma_restrack_add(struct rdma_restrack_entry *res)
|
||||
kref_init(&res->kref);
|
||||
init_completion(&res->comp);
|
||||
|
||||
down_write(&dev->res.rwsem);
|
||||
ret = rt_xa_alloc_cyclic(&dev->res.xa[res->type], &res->id, res,
|
||||
&dev->res.next_id[res->type]);
|
||||
|
||||
if (!ret)
|
||||
res->valid = true;
|
||||
up_write(&dev->res.rwsem);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -58,7 +58,8 @@ struct rdma_restrack_entry;
|
||||
*/
|
||||
struct rdma_restrack_root {
|
||||
/*
|
||||
* @rwsem: Read/write lock to protect lists
|
||||
* @rwsem: Read/write lock to protect erase of entry.
|
||||
* Lists and insertions are protected by XArray internal lock.
|
||||
*/
|
||||
struct rw_semaphore rwsem;
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user