forked from luck/tmp_suning_uos_patched
RDMA/restrack: Translate from ID to restrack object
Add new general helper to get restrack entry given by ID and their respective type. Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
fd47c2f99f
commit
18c4c66f76
|
@ -256,6 +256,31 @@ int __must_check rdma_restrack_get(struct rdma_restrack_entry *res)
|
|||
}
|
||||
EXPORT_SYMBOL(rdma_restrack_get);
|
||||
|
||||
/**
|
||||
* rdma_restrack_get_byid() - translate from ID to restrack object
|
||||
* @dev: IB device
|
||||
* @type: resource track type
|
||||
* @id: ID to take a look
|
||||
*
|
||||
* Return: Pointer to restrack entry or -ENOENT in case of error.
|
||||
*/
|
||||
struct rdma_restrack_entry *
|
||||
rdma_restrack_get_byid(struct ib_device *dev,
|
||||
enum rdma_restrack_type type, u32 id)
|
||||
{
|
||||
struct rdma_restrack_root *rt = &dev->res;
|
||||
struct rdma_restrack_entry *res;
|
||||
|
||||
down_read(&dev->res.rwsem);
|
||||
res = xa_load(&rt->xa[type], id);
|
||||
if (!res || !rdma_restrack_get(res))
|
||||
res = ERR_PTR(-ENOENT);
|
||||
up_read(&dev->res.rwsem);
|
||||
|
||||
return res;
|
||||
}
|
||||
EXPORT_SYMBOL(rdma_restrack_get_byid);
|
||||
|
||||
static void restrack_release(struct kref *kref)
|
||||
{
|
||||
struct rdma_restrack_entry *res;
|
||||
|
|
|
@ -179,4 +179,7 @@ int rdma_nl_put_driver_u32_hex(struct sk_buff *msg, const char *name,
|
|||
int rdma_nl_put_driver_u64(struct sk_buff *msg, const char *name, u64 value);
|
||||
int rdma_nl_put_driver_u64_hex(struct sk_buff *msg, const char *name,
|
||||
u64 value);
|
||||
struct rdma_restrack_entry *rdma_restrack_get_byid(struct ib_device *dev,
|
||||
enum rdma_restrack_type type,
|
||||
u32 id);
|
||||
#endif /* _RDMA_RESTRACK_H_ */
|
||||
|
|
Loading…
Reference in New Issue
Block a user