mirror of https://gitee.com/openkylin/linux.git
SUNRPC: Hoist trace_xprtrdma_op_setport into generic code
Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
e465cc3fa8
commit
ac1ae53421
|
@ -423,7 +423,6 @@ DEFINE_CONN_EVENT(connect);
|
|||
DEFINE_CONN_EVENT(disconnect);
|
||||
|
||||
DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
|
||||
DEFINE_RXPRT_EVENT(xprtrdma_op_setport);
|
||||
|
||||
TRACE_EVENT(xprtrdma_op_connect,
|
||||
TP_PROTO(
|
||||
|
|
|
@ -1305,6 +1305,35 @@ TRACE_EVENT(rpcb_getport,
|
|||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(rpcb_setport,
|
||||
TP_PROTO(
|
||||
const struct rpc_task *task,
|
||||
int status,
|
||||
unsigned short port
|
||||
),
|
||||
|
||||
TP_ARGS(task, status, port),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, task_id)
|
||||
__field(unsigned int, client_id)
|
||||
__field(int, status)
|
||||
__field(unsigned short, port)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->task_id = task->tk_pid;
|
||||
__entry->client_id = task->tk_client->cl_clid;
|
||||
__entry->status = status;
|
||||
__entry->port = port;
|
||||
),
|
||||
|
||||
TP_printk("task:%u@%u status=%d port=%u",
|
||||
__entry->task_id, __entry->client_id,
|
||||
__entry->status, __entry->port
|
||||
)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(svc_xdr_buf_class,
|
||||
TP_PROTO(
|
||||
const struct svc_rqst *rqst,
|
||||
|
|
|
@ -801,34 +801,33 @@ static void rpcb_getport_done(struct rpc_task *child, void *data)
|
|||
{
|
||||
struct rpcbind_args *map = data;
|
||||
struct rpc_xprt *xprt = map->r_xprt;
|
||||
int status = child->tk_status;
|
||||
|
||||
map->r_status = child->tk_status;
|
||||
|
||||
/* Garbage reply: retry with a lesser rpcbind version */
|
||||
if (status == -EIO)
|
||||
status = -EPROTONOSUPPORT;
|
||||
if (map->r_status == -EIO)
|
||||
map->r_status = -EPROTONOSUPPORT;
|
||||
|
||||
/* rpcbind server doesn't support this rpcbind protocol version */
|
||||
if (status == -EPROTONOSUPPORT)
|
||||
if (map->r_status == -EPROTONOSUPPORT)
|
||||
xprt->bind_index++;
|
||||
|
||||
if (status < 0) {
|
||||
if (map->r_status < 0) {
|
||||
/* rpcbind server not available on remote host? */
|
||||
xprt->ops->set_port(xprt, 0);
|
||||
map->r_port = 0;
|
||||
|
||||
} else if (map->r_port == 0) {
|
||||
/* Requested RPC service wasn't registered on remote host */
|
||||
xprt->ops->set_port(xprt, 0);
|
||||
status = -EACCES;
|
||||
map->r_status = -EACCES;
|
||||
} else {
|
||||
/* Succeeded */
|
||||
xprt->ops->set_port(xprt, map->r_port);
|
||||
xprt_set_bound(xprt);
|
||||
status = 0;
|
||||
map->r_status = 0;
|
||||
}
|
||||
|
||||
dprintk("RPC: %5u rpcb_getport_done(status %d, port %u)\n",
|
||||
child->tk_pid, status, map->r_port);
|
||||
|
||||
map->r_status = status;
|
||||
trace_rpcb_setport(child, map->r_status, map->r_port);
|
||||
xprt->ops->set_port(xprt, map->r_port);
|
||||
if (map->r_port)
|
||||
xprt_set_bound(xprt);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -413,9 +413,6 @@ xprt_rdma_set_port(struct rpc_xprt *xprt, u16 port)
|
|||
kfree(xprt->address_strings[RPC_DISPLAY_HEX_PORT]);
|
||||
snprintf(buf, sizeof(buf), "%4hx", port);
|
||||
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
|
||||
|
||||
trace_xprtrdma_op_setport(container_of(xprt, struct rpcrdma_xprt,
|
||||
rx_xprt));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue