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_CONN_EVENT(disconnect);
|
||||||
|
|
||||||
DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
|
DEFINE_RXPRT_EVENT(xprtrdma_op_inject_dsc);
|
||||||
DEFINE_RXPRT_EVENT(xprtrdma_op_setport);
|
|
||||||
|
|
||||||
TRACE_EVENT(xprtrdma_op_connect,
|
TRACE_EVENT(xprtrdma_op_connect,
|
||||||
TP_PROTO(
|
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,
|
DECLARE_EVENT_CLASS(svc_xdr_buf_class,
|
||||||
TP_PROTO(
|
TP_PROTO(
|
||||||
const struct svc_rqst *rqst,
|
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 rpcbind_args *map = data;
|
||||||
struct rpc_xprt *xprt = map->r_xprt;
|
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 */
|
/* Garbage reply: retry with a lesser rpcbind version */
|
||||||
if (status == -EIO)
|
if (map->r_status == -EIO)
|
||||||
status = -EPROTONOSUPPORT;
|
map->r_status = -EPROTONOSUPPORT;
|
||||||
|
|
||||||
/* rpcbind server doesn't support this rpcbind protocol version */
|
/* rpcbind server doesn't support this rpcbind protocol version */
|
||||||
if (status == -EPROTONOSUPPORT)
|
if (map->r_status == -EPROTONOSUPPORT)
|
||||||
xprt->bind_index++;
|
xprt->bind_index++;
|
||||||
|
|
||||||
if (status < 0) {
|
if (map->r_status < 0) {
|
||||||
/* rpcbind server not available on remote host? */
|
/* rpcbind server not available on remote host? */
|
||||||
xprt->ops->set_port(xprt, 0);
|
map->r_port = 0;
|
||||||
|
|
||||||
} else if (map->r_port == 0) {
|
} else if (map->r_port == 0) {
|
||||||
/* Requested RPC service wasn't registered on remote host */
|
/* Requested RPC service wasn't registered on remote host */
|
||||||
xprt->ops->set_port(xprt, 0);
|
map->r_status = -EACCES;
|
||||||
status = -EACCES;
|
|
||||||
} else {
|
} else {
|
||||||
/* Succeeded */
|
/* Succeeded */
|
||||||
xprt->ops->set_port(xprt, map->r_port);
|
map->r_status = 0;
|
||||||
xprt_set_bound(xprt);
|
|
||||||
status = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dprintk("RPC: %5u rpcb_getport_done(status %d, port %u)\n",
|
trace_rpcb_setport(child, map->r_status, map->r_port);
|
||||||
child->tk_pid, status, map->r_port);
|
xprt->ops->set_port(xprt, map->r_port);
|
||||||
|
if (map->r_port)
|
||||||
map->r_status = status;
|
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]);
|
kfree(xprt->address_strings[RPC_DISPLAY_HEX_PORT]);
|
||||||
snprintf(buf, sizeof(buf), "%4hx", port);
|
snprintf(buf, sizeof(buf), "%4hx", port);
|
||||||
xprt->address_strings[RPC_DISPLAY_HEX_PORT] = kstrdup(buf, GFP_KERNEL);
|
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
Block a user