svc: Make close transport independent
Move sk_list and sk_ready to svc_xprt. This involves close because these lists are walked by svcs when closing all their transports. So I combined the moving of these lists to svc_xprt with making close transport independent. The svc_force_sock_close has been changed to svc_close_all and takes a list as an argument. This removes some svc internals knowledge from the svcs. This code races with module removal and transport addition. Thanks to Simon Holm Thøgersen for a compile fix. 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> Cc: Simon Holm Thøgersen <odie@cs.aau.dk>
This commit is contained in:
committed by
J. Bruce Fields
parent
bb5cf160b2
commit
7a18208383
@@ -17,8 +17,6 @@
|
||||
*/
|
||||
struct svc_sock {
|
||||
struct svc_xprt sk_xprt;
|
||||
struct list_head sk_ready; /* list of ready sockets */
|
||||
struct list_head sk_list; /* list of all sockets */
|
||||
struct socket * sk_sock; /* berkeley socket layer */
|
||||
struct sock * sk_sk; /* INET layer */
|
||||
|
||||
@@ -51,7 +49,7 @@ struct svc_sock {
|
||||
/*
|
||||
* Function prototypes.
|
||||
*/
|
||||
void svc_force_close_socket(struct svc_sock *);
|
||||
void svc_close_all(struct list_head *);
|
||||
int svc_recv(struct svc_rqst *, long);
|
||||
int svc_send(struct svc_rqst *);
|
||||
void svc_drop(struct svc_rqst *);
|
||||
|
Reference in New Issue
Block a user