Re: [PATCH rdma-next 2/2] RDMA/nldev: Provide parent IDs for PD, MR and QP objects

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 22, 2019 at 08:18:56PM +0200, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> 
> PD, MR and QP objects have parents objects: contexts and PDs.
> The exposed parent IDs allow to correlate various objects
> and simplify debug investigation.
> 
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
>  drivers/infiniband/core/nldev.c  | 41 ++++++++++++++++++++++++++++----
>  include/uapi/rdma/rdma_netlink.h |  1 +
>  2 files changed, 38 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
> index 3b24838fe6e0..9bcfd3e4e099 100644
> +++ b/drivers/infiniband/core/nldev.c
> @@ -111,6 +111,7 @@ static const struct nla_policy nldev_policy[RDMA_NLDEV_ATTR_MAX] = {
>  	[RDMA_NLDEV_ATTR_RES_CQN]               = { .type = NLA_U32 },
>  	[RDMA_NLDEV_ATTR_RES_MRN]               = { .type = NLA_U32 },
>  	[RDMA_NLDEV_ATTR_RES_CM_IDN]            = { .type = NLA_U32 },
> +	[RDMA_NLDEV_ATTR_RES_CTXN]              = { .type = NLA_U32 },
>  };
>  
>  static int put_driver_name_print_type(struct sk_buff *msg, const char *name,
> @@ -375,25 +376,54 @@ static bool fill_res_entry(struct ib_device *dev, struct sk_buff *msg,
>  
>  static bool fill_res_ids(struct sk_buff *msg, struct rdma_restrack_entry *res)
>  {
> -	bool ret;
> +	bool ret = false;
>  
>  	switch (res->type) {
> -	case RDMA_RESTRACK_PD:
> +	case RDMA_RESTRACK_PD: {
> +		struct ib_pd *pd = container_of(res, struct ib_pd, res);
> +
>  		ret = nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_PDN,
>  				  rdma_res_to_id(res));
> +		if (!ret && !rdma_is_kernel_res(res))
> +			ret = nla_put_u32(
> +				msg, RDMA_NLDEV_ATTR_RES_CTXN,
> +				rdma_res_to_id(&pd->uobject->context->res));

uobject->context cannot be accessed without proper uobject locking.

See the recent email to Shamir.

Shamir is also working to eliminate pd->uobject so we should not have
more references being added.

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux