mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
SUNRPC: Export svc_xprt_received()
Prepare svc_xprt_received() to be called from transport code instead of from generic RPC server code. Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
cc93ce9529
commit
7dcfbd86ad
@ -130,6 +130,7 @@ void svc_xprt_init(struct net *, struct svc_xprt_class *, struct svc_xprt *,
|
||||
int svc_create_xprt(struct svc_serv *, const char *, struct net *,
|
||||
const int, const unsigned short, int,
|
||||
const struct cred *);
|
||||
void svc_xprt_received(struct svc_xprt *xprt);
|
||||
void svc_xprt_do_enqueue(struct svc_xprt *xprt);
|
||||
void svc_xprt_enqueue(struct svc_xprt *xprt);
|
||||
void svc_xprt_put(struct svc_xprt *xprt);
|
||||
|
@ -1781,6 +1781,7 @@ DECLARE_EVENT_CLASS(svc_xprt_event,
|
||||
), \
|
||||
TP_ARGS(xprt))
|
||||
|
||||
DEFINE_SVC_XPRT_EVENT(received);
|
||||
DEFINE_SVC_XPRT_EVENT(no_write_space);
|
||||
DEFINE_SVC_XPRT_EVENT(close);
|
||||
DEFINE_SVC_XPRT_EVENT(detach);
|
||||
|
@ -247,21 +247,25 @@ static struct svc_xprt *__svc_xpo_create(struct svc_xprt_class *xcl,
|
||||
return xprt;
|
||||
}
|
||||
|
||||
/*
|
||||
* svc_xprt_received conditionally queues the transport for processing
|
||||
* by another thread. The caller must hold the XPT_BUSY bit and must
|
||||
/**
|
||||
* svc_xprt_received - start next receiver thread
|
||||
* @xprt: controlling transport
|
||||
*
|
||||
* The caller must hold the XPT_BUSY bit and must
|
||||
* not thereafter touch transport data.
|
||||
*
|
||||
* Note: XPT_DATA only gets cleared when a read-attempt finds no (or
|
||||
* insufficient) data.
|
||||
*/
|
||||
static void svc_xprt_received(struct svc_xprt *xprt)
|
||||
void svc_xprt_received(struct svc_xprt *xprt)
|
||||
{
|
||||
if (!test_bit(XPT_BUSY, &xprt->xpt_flags)) {
|
||||
WARN_ONCE(1, "xprt=0x%p already busy!", xprt);
|
||||
return;
|
||||
}
|
||||
|
||||
trace_svc_xprt_received(xprt);
|
||||
|
||||
/* As soon as we clear busy, the xprt could be closed and
|
||||
* 'put', so we need a reference to call svc_enqueue_xprt with:
|
||||
*/
|
||||
@ -271,6 +275,7 @@ static void svc_xprt_received(struct svc_xprt *xprt)
|
||||
xprt->xpt_server->sv_ops->svo_enqueue_xprt(xprt);
|
||||
svc_xprt_put(xprt);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(svc_xprt_received);
|
||||
|
||||
void svc_add_new_perm_xprt(struct svc_serv *serv, struct svc_xprt *new)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user