diff options
author | Tom Tucker <tom@opengridcomputing.com> | 2007-12-30 22:07:46 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2008-02-01 16:42:11 -0500 |
commit | e1b3157f9710622bad6c7747d3b08ed3d2394cf6 (patch) | |
tree | e03687e0363fdb2307f7e4909a735e8d1331050a /include/linux/sunrpc | |
parent | d7c9f1ed972b4a468dd24a2457721704dfe9ca70 (diff) |
svc: Change sk_inuse to a kref
Change the atomic_t reference count to a kref and move it to the
transport indepenent svc_xprt structure. Change the reference count
wrapper names to be generic.
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>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r-- | include/linux/sunrpc/svc_xprt.h | 8 | ||||
-rw-r--r-- | include/linux/sunrpc/svcsock.h | 1 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/linux/sunrpc/svc_xprt.h b/include/linux/sunrpc/svc_xprt.h index 986a5a07044b..6374805887a6 100644 --- a/include/linux/sunrpc/svc_xprt.h +++ b/include/linux/sunrpc/svc_xprt.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #define SUNRPC_SVC_XPRT_H | 8 | #define SUNRPC_SVC_XPRT_H |
9 | 9 | ||
10 | #include <linux/sunrpc/svc.h> | 10 | #include <linux/sunrpc/svc.h> |
11 | #include <linux/module.h> | ||
11 | 12 | ||
12 | struct svc_xprt_ops { | 13 | struct svc_xprt_ops { |
13 | struct svc_xprt *(*xpo_create)(struct svc_serv *, | 14 | struct svc_xprt *(*xpo_create)(struct svc_serv *, |
@@ -34,11 +35,18 @@ struct svc_xprt_class { | |||
34 | struct svc_xprt { | 35 | struct svc_xprt { |
35 | struct svc_xprt_class *xpt_class; | 36 | struct svc_xprt_class *xpt_class; |
36 | struct svc_xprt_ops *xpt_ops; | 37 | struct svc_xprt_ops *xpt_ops; |
38 | struct kref xpt_ref; | ||
37 | }; | 39 | }; |
38 | 40 | ||
39 | int svc_reg_xprt_class(struct svc_xprt_class *); | 41 | int svc_reg_xprt_class(struct svc_xprt_class *); |
40 | void svc_unreg_xprt_class(struct svc_xprt_class *); | 42 | void svc_unreg_xprt_class(struct svc_xprt_class *); |
41 | void svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *); | 43 | void svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *); |
42 | int svc_create_xprt(struct svc_serv *, char *, unsigned short, int); | 44 | int svc_create_xprt(struct svc_serv *, char *, unsigned short, int); |
45 | void svc_xprt_put(struct svc_xprt *xprt); | ||
46 | |||
47 | static inline void svc_xprt_get(struct svc_xprt *xprt) | ||
48 | { | ||
49 | kref_get(&xprt->xpt_ref); | ||
50 | } | ||
43 | 51 | ||
44 | #endif /* SUNRPC_SVC_XPRT_H */ | 52 | #endif /* SUNRPC_SVC_XPRT_H */ |
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index 3181d9d4caa0..ba07d50cb11b 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h | |||
@@ -24,7 +24,6 @@ struct svc_sock { | |||
24 | 24 | ||
25 | struct svc_pool * sk_pool; /* current pool iff queued */ | 25 | struct svc_pool * sk_pool; /* current pool iff queued */ |
26 | struct svc_serv * sk_server; /* service for this socket */ | 26 | struct svc_serv * sk_server; /* service for this socket */ |
27 | atomic_t sk_inuse; /* use count */ | ||
28 | unsigned long sk_flags; | 27 | unsigned long sk_flags; |
29 | #define SK_BUSY 0 /* enqueued/receiving */ | 28 | #define SK_BUSY 0 /* enqueued/receiving */ |
30 | #define SK_CONN 1 /* conn pending */ | 29 | #define SK_CONN 1 /* conn pending */ |