svc: Make deferral processing xprt independent
This patch moves the transport independent sk_deferred list to the svc_xprt structure and updates the svc_deferred_req structure to keep pointers to svc_xprt's directly. The deferral processing code is also moved out of the transport dependent recvfrom functions and into the generic svc_recv path. Signed-off-by: Tom Tucker <tom@opengridcomputing.com> Acked-by: Neil Brown <neilb@suse.de> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Greg Banks <gnb@sgi.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:

committed by
J. Bruce Fields

parent
def13d7401
commit
8c7b0172a1
@@ -320,7 +320,7 @@ static inline void svc_free_res_pages(struct svc_rqst *rqstp)
|
||||
|
||||
struct svc_deferred_req {
|
||||
u32 prot; /* protocol (UDP or TCP) */
|
||||
struct svc_sock *svsk;
|
||||
struct svc_xprt *xprt;
|
||||
struct sockaddr_storage addr; /* where reply must go */
|
||||
size_t addrlen;
|
||||
union svc_addr_u daddr; /* where reply must come from */
|
||||
|
@@ -59,6 +59,8 @@ struct svc_xprt {
|
||||
spinlock_t xpt_lock; /* protects sk_deferred
|
||||
* and xpt_auth_cache */
|
||||
void *xpt_auth_cache;/* auth cache */
|
||||
struct list_head xpt_deferred; /* deferred requests that need
|
||||
* to be revisted */
|
||||
};
|
||||
|
||||
int svc_reg_xprt_class(struct svc_xprt_class *);
|
||||
|
@@ -20,9 +20,6 @@ struct svc_sock {
|
||||
struct socket * sk_sock; /* berkeley socket layer */
|
||||
struct sock * sk_sk; /* INET layer */
|
||||
|
||||
struct list_head sk_deferred; /* deferred requests that need to
|
||||
* be revisted */
|
||||
|
||||
/* We keep the old state_change and data_ready CB's here */
|
||||
void (*sk_ostate)(struct sock *);
|
||||
void (*sk_odata)(struct sock *, int bytes);
|
||||
|
Reference in New Issue
Block a user