On Tue, Jan 22, 2019 at 12:09:49PM -0700, Jason Gunthorpe wrote: > 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. How can context "disappear" if we are holding PD which is part of that context? > > See the recent email to Shamir. > > Shamir is also working to eliminate pd->uobject so we should not have > more references being added. Was anything accepted so I can use instead? If not, I will update the code, once it will be part of rdma-next. I don't know the status of Shamir's work, but this code is ready to be merged. Thanks > > Jason
Attachment:
signature.asc
Description: PGP signature