From: Leon Romanovsky <leonro@xxxxxxxxxxxx> The QPs in the RDMA stack can be created by kernel or users space, but the owner is not visible to users after that. The added helper keeps track of newly created QP together with the name of the owner. In case of kernel, the caller to create_qp is supposed to update QP's attribute with the name. For user space callers no change is needed and the name will be taken from the process name. This helper sets qp->device field for all QP types including XRC_TGT, which RDMA/core didn't do before. Reviewed-by: Mark Bloch <markb@xxxxxxxxxxxx> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx> Reviewed-by: Steve Wise <swise@xxxxxxxxxxxxxxxxxxxxx> --- drivers/infiniband/core/core_priv.h | 19 +++++++++++++++++++ include/rdma/ib_verbs.h | 6 ++++++ 2 files changed, 25 insertions(+) diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h index 2b1372da708a..3f1442bd5fdc 100644 --- a/drivers/infiniband/core/core_priv.h +++ b/drivers/infiniband/core/core_priv.h @@ -301,4 +301,23 @@ struct ib_device *ib_device_get_by_index(u32 ifindex); /* RDMA device netlink */ void nldev_init(void); void nldev_exit(void); + +static inline struct ib_qp *_ib_create_qp(struct ib_device *dev, + struct ib_pd *pd, + struct ib_qp_init_attr *attr, + struct ib_udata *udata) +{ + struct ib_qp *qp; + + qp = dev->create_qp(pd, attr, udata); + if (!IS_ERR(qp)) { + qp->device = dev; + if (attr->qp_type < IB_QPT_MAX) + rdma_restrack_add(&qp->res, + RDMA_RESTRACK_QP, + attr->comm); + } + + return qp; +} #endif /* _CORE_PRIV_H */ diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 271265cd7c1a..41d4f59cac5e 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -1141,6 +1141,12 @@ struct ib_qp_init_attr { u8 port_num; struct ib_rwq_ind_table *rwq_ind_tbl; u32 source_qpn; + + /* + * Name of entity which created this QP, empty string means that + * it will be taken automatically from task_struct. + */ + char comm[TASK_COMM_LEN]; }; struct ib_qp_open_attr { -- 2.15.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html