RDMA/core: Move and rename trace_cm_id_create()
The restrack ID for an rdma_cm_id is not assigned until it is
associated with a device.
Here's an example I captured while testing NFS/RDMA's support for
DEVICE_REMOVAL. The new tracepoint name is "cm_id_attach".
<...>-4261 [001] 366.581299: cm_event_handler: cm.id=0 src=0.0.0.0:45919 dst=192.168.2.55:20049 tos=0 ADDR_ERROR (1/-19)
<...>-4261 [001] 366.581304: cm_event_done: cm.id=0 src=0.0.0.0:45919 dst=192.168.2.55:20049 tos=0 ADDR_ERROR consumer returns 0
<...>-1950 [000] 366.581309: cm_id_destroy: cm.id=0 src=0.0.0.0:45919 dst=192.168.2.55:20049 tos=0
<...>-7 [001] 369.589400: cm_event_handler: cm.id=0 src=0.0.0.0:49023 dst=192.168.2.55:20049 tos=0 ADDR_ERROR (1/-19)
<...>-7 [001] 369.589404: cm_event_done: cm.id=0 src=0.0.0.0:49023 dst=192.168.2.55:20049 tos=0 ADDR_ERROR consumer returns 0
<...>-1950 [000] 369.589407: cm_id_destroy: cm.id=0 src=0.0.0.0:49023 dst=192.168.2.55:20049 tos=0
<...>-4261 [001] 372.597650: cm_id_attach: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 device=mlx4_0
<...>-4261 [001] 372.597652: cm_event_handler: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ADDR_RESOLVED (0/0)
<...>-4261 [001] 372.597654: cm_event_done: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ADDR_RESOLVED consumer returns 0
<...>-4261 [001] 372.597738: cm_event_handler: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ROUTE_RESOLVED (2/0)
<...>-4261 [001] 372.597740: cm_event_done: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ROUTE_RESOLVED consumer returns 0
<...>-4691 [007] 372.600101: cm_qp_create: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 pd.id=2 qp_type=RC send_wr=4091 recv_wr=256 qp_num=530 rc=0
<...>-4691 [007] 372.600207: cm_send_req: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 qp_num=530
<...>-185 [002] 372.601212: cm_send_mra: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0
<...>-185 [002] 372.601362: cm_send_rtu: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0
<...>-185 [002] 372.601372: cm_event_handler: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ESTABLISHED (9/0)
<...>-185 [002] 372.601379: cm_event_done: cm.id=0 src=192.168.2.51:47492 dst=192.168.2.55:20049 tos=0 ESTABLISHED consumer returns 0
Fixes: ed999f820a
("RDMA/cma: Add trace points in RDMA Connection Manager")
Link: https://lore.kernel.org/r/20200530174934.21362.56754.stgit@manet.1015granger.net
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
24c567ff75
commit
278f74b39e
|
@ -484,6 +484,7 @@ static void _cma_attach_to_dev(struct rdma_id_private *id_priv,
|
||||||
rdma_restrack_kadd(&id_priv->res);
|
rdma_restrack_kadd(&id_priv->res);
|
||||||
else
|
else
|
||||||
rdma_restrack_uadd(&id_priv->res);
|
rdma_restrack_uadd(&id_priv->res);
|
||||||
|
trace_cm_id_attach(id_priv, cma_dev->device);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void cma_attach_to_dev(struct rdma_id_private *id_priv,
|
static void cma_attach_to_dev(struct rdma_id_private *id_priv,
|
||||||
|
@ -888,7 +889,6 @@ struct rdma_cm_id *__rdma_create_id(struct net *net,
|
||||||
id_priv->id.route.addr.dev_addr.net = get_net(net);
|
id_priv->id.route.addr.dev_addr.net = get_net(net);
|
||||||
id_priv->seq_num &= 0x00ffffff;
|
id_priv->seq_num &= 0x00ffffff;
|
||||||
|
|
||||||
trace_cm_id_create(id_priv);
|
|
||||||
return &id_priv->id;
|
return &id_priv->id;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__rdma_create_id);
|
EXPORT_SYMBOL(__rdma_create_id);
|
||||||
|
|
|
@ -103,23 +103,33 @@ DEFINE_CMA_FSM_EVENT(sent_drep);
|
||||||
DEFINE_CMA_FSM_EVENT(sent_dreq);
|
DEFINE_CMA_FSM_EVENT(sent_dreq);
|
||||||
DEFINE_CMA_FSM_EVENT(id_destroy);
|
DEFINE_CMA_FSM_EVENT(id_destroy);
|
||||||
|
|
||||||
TRACE_EVENT(cm_id_create,
|
TRACE_EVENT(cm_id_attach,
|
||||||
TP_PROTO(
|
TP_PROTO(
|
||||||
const struct rdma_id_private *id_priv
|
const struct rdma_id_private *id_priv,
|
||||||
|
const struct ib_device *device
|
||||||
),
|
),
|
||||||
|
|
||||||
TP_ARGS(id_priv),
|
TP_ARGS(id_priv, device),
|
||||||
|
|
||||||
TP_STRUCT__entry(
|
TP_STRUCT__entry(
|
||||||
__field(u32, cm_id)
|
__field(u32, cm_id)
|
||||||
|
__array(unsigned char, srcaddr, sizeof(struct sockaddr_in6))
|
||||||
|
__array(unsigned char, dstaddr, sizeof(struct sockaddr_in6))
|
||||||
|
__string(devname, device->name)
|
||||||
),
|
),
|
||||||
|
|
||||||
TP_fast_assign(
|
TP_fast_assign(
|
||||||
__entry->cm_id = id_priv->res.id;
|
__entry->cm_id = id_priv->res.id;
|
||||||
|
memcpy(__entry->srcaddr, &id_priv->id.route.addr.src_addr,
|
||||||
|
sizeof(struct sockaddr_in6));
|
||||||
|
memcpy(__entry->dstaddr, &id_priv->id.route.addr.dst_addr,
|
||||||
|
sizeof(struct sockaddr_in6));
|
||||||
|
__assign_str(devname, device->name);
|
||||||
),
|
),
|
||||||
|
|
||||||
TP_printk("cm.id=%u",
|
TP_printk("cm.id=%u src=%pISpc dst=%pISpc device=%s",
|
||||||
__entry->cm_id
|
__entry->cm_id, __entry->srcaddr, __entry->dstaddr,
|
||||||
|
__get_str(devname)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue