diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-03-19 04:47:30 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-03-19 04:47:30 -0400 |
commit | 0d4a42f6bd298e826620585e766a154ab460617a (patch) | |
tree | 406d8f7778691d858dbe3e48e4bbb10e99c0a58a /include/linux/sunrpc | |
parent | d62b4892f3d9f7dd2002e5309be10719d6805b0f (diff) | |
parent | a937536b868b8369b98967929045f1df54234323 (diff) |
Merge tag 'v3.9-rc3' into drm-intel-next-queued
Backmerge so that I can merge Imre Deak's coalesced sg entries fixes,
which depend upon the new for_each_sg_page introduce in
commit a321e91b6d73ed011ffceed384c40d2785cf723b
Author: Imre Deak <imre.deak@intel.com>
Date: Wed Feb 27 17:02:56 2013 -0800
lib/scatterlist: add simple page iterator
The merge itself is just two trivial conflicts:
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'include/linux/sunrpc')
-rw-r--r-- | include/linux/sunrpc/addr.h | 170 | ||||
-rw-r--r-- | include/linux/sunrpc/auth.h | 7 | ||||
-rw-r--r-- | include/linux/sunrpc/cache.h | 10 | ||||
-rw-r--r-- | include/linux/sunrpc/clnt.h | 153 | ||||
-rw-r--r-- | include/linux/sunrpc/sched.h | 1 | ||||
-rw-r--r-- | include/linux/sunrpc/svc.h | 1 | ||||
-rw-r--r-- | include/linux/sunrpc/svcauth.h | 4 | ||||
-rw-r--r-- | include/linux/sunrpc/xdr.h | 3 | ||||
-rw-r--r-- | include/linux/sunrpc/xprt.h | 6 |
9 files changed, 188 insertions, 167 deletions
diff --git a/include/linux/sunrpc/addr.h b/include/linux/sunrpc/addr.h new file mode 100644 index 000000000000..07d8e53bedfc --- /dev/null +++ b/include/linux/sunrpc/addr.h | |||
@@ -0,0 +1,170 @@ | |||
1 | /* | ||
2 | * linux/include/linux/sunrpc/addr.h | ||
3 | * | ||
4 | * Various routines for copying and comparing sockaddrs and for | ||
5 | * converting them to and from presentation format. | ||
6 | */ | ||
7 | #ifndef _LINUX_SUNRPC_ADDR_H | ||
8 | #define _LINUX_SUNRPC_ADDR_H | ||
9 | |||
10 | #include <linux/socket.h> | ||
11 | #include <linux/in.h> | ||
12 | #include <linux/in6.h> | ||
13 | #include <net/ipv6.h> | ||
14 | |||
15 | size_t rpc_ntop(const struct sockaddr *, char *, const size_t); | ||
16 | size_t rpc_pton(struct net *, const char *, const size_t, | ||
17 | struct sockaddr *, const size_t); | ||
18 | char * rpc_sockaddr2uaddr(const struct sockaddr *, gfp_t); | ||
19 | size_t rpc_uaddr2sockaddr(struct net *, const char *, const size_t, | ||
20 | struct sockaddr *, const size_t); | ||
21 | |||
22 | static inline unsigned short rpc_get_port(const struct sockaddr *sap) | ||
23 | { | ||
24 | switch (sap->sa_family) { | ||
25 | case AF_INET: | ||
26 | return ntohs(((struct sockaddr_in *)sap)->sin_port); | ||
27 | case AF_INET6: | ||
28 | return ntohs(((struct sockaddr_in6 *)sap)->sin6_port); | ||
29 | } | ||
30 | return 0; | ||
31 | } | ||
32 | |||
33 | static inline void rpc_set_port(struct sockaddr *sap, | ||
34 | const unsigned short port) | ||
35 | { | ||
36 | switch (sap->sa_family) { | ||
37 | case AF_INET: | ||
38 | ((struct sockaddr_in *)sap)->sin_port = htons(port); | ||
39 | break; | ||
40 | case AF_INET6: | ||
41 | ((struct sockaddr_in6 *)sap)->sin6_port = htons(port); | ||
42 | break; | ||
43 | } | ||
44 | } | ||
45 | |||
46 | #define IPV6_SCOPE_DELIMITER '%' | ||
47 | #define IPV6_SCOPE_ID_LEN sizeof("%nnnnnnnnnn") | ||
48 | |||
49 | static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1, | ||
50 | const struct sockaddr *sap2) | ||
51 | { | ||
52 | const struct sockaddr_in *sin1 = (const struct sockaddr_in *)sap1; | ||
53 | const struct sockaddr_in *sin2 = (const struct sockaddr_in *)sap2; | ||
54 | |||
55 | return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr; | ||
56 | } | ||
57 | |||
58 | static inline bool __rpc_copy_addr4(struct sockaddr *dst, | ||
59 | const struct sockaddr *src) | ||
60 | { | ||
61 | const struct sockaddr_in *ssin = (struct sockaddr_in *) src; | ||
62 | struct sockaddr_in *dsin = (struct sockaddr_in *) dst; | ||
63 | |||
64 | dsin->sin_family = ssin->sin_family; | ||
65 | dsin->sin_addr.s_addr = ssin->sin_addr.s_addr; | ||
66 | return true; | ||
67 | } | ||
68 | |||
69 | #if IS_ENABLED(CONFIG_IPV6) | ||
70 | static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1, | ||
71 | const struct sockaddr *sap2) | ||
72 | { | ||
73 | const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1; | ||
74 | const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2; | ||
75 | |||
76 | if (!ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr)) | ||
77 | return false; | ||
78 | else if (ipv6_addr_type(&sin1->sin6_addr) & IPV6_ADDR_LINKLOCAL) | ||
79 | return sin1->sin6_scope_id == sin2->sin6_scope_id; | ||
80 | |||
81 | return true; | ||
82 | } | ||
83 | |||
84 | static inline bool __rpc_copy_addr6(struct sockaddr *dst, | ||
85 | const struct sockaddr *src) | ||
86 | { | ||
87 | const struct sockaddr_in6 *ssin6 = (const struct sockaddr_in6 *) src; | ||
88 | struct sockaddr_in6 *dsin6 = (struct sockaddr_in6 *) dst; | ||
89 | |||
90 | dsin6->sin6_family = ssin6->sin6_family; | ||
91 | dsin6->sin6_addr = ssin6->sin6_addr; | ||
92 | dsin6->sin6_scope_id = ssin6->sin6_scope_id; | ||
93 | return true; | ||
94 | } | ||
95 | #else /* !(IS_ENABLED(CONFIG_IPV6) */ | ||
96 | static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1, | ||
97 | const struct sockaddr *sap2) | ||
98 | { | ||
99 | return false; | ||
100 | } | ||
101 | |||
102 | static inline bool __rpc_copy_addr6(struct sockaddr *dst, | ||
103 | const struct sockaddr *src) | ||
104 | { | ||
105 | return false; | ||
106 | } | ||
107 | #endif /* !(IS_ENABLED(CONFIG_IPV6) */ | ||
108 | |||
109 | /** | ||
110 | * rpc_cmp_addr - compare the address portion of two sockaddrs. | ||
111 | * @sap1: first sockaddr | ||
112 | * @sap2: second sockaddr | ||
113 | * | ||
114 | * Just compares the family and address portion. Ignores port, but | ||
115 | * compares the scope if it's a link-local address. | ||
116 | * | ||
117 | * Returns true if the addrs are equal, false if they aren't. | ||
118 | */ | ||
119 | static inline bool rpc_cmp_addr(const struct sockaddr *sap1, | ||
120 | const struct sockaddr *sap2) | ||
121 | { | ||
122 | if (sap1->sa_family == sap2->sa_family) { | ||
123 | switch (sap1->sa_family) { | ||
124 | case AF_INET: | ||
125 | return __rpc_cmp_addr4(sap1, sap2); | ||
126 | case AF_INET6: | ||
127 | return __rpc_cmp_addr6(sap1, sap2); | ||
128 | } | ||
129 | } | ||
130 | return false; | ||
131 | } | ||
132 | |||
133 | /** | ||
134 | * rpc_copy_addr - copy the address portion of one sockaddr to another | ||
135 | * @dst: destination sockaddr | ||
136 | * @src: source sockaddr | ||
137 | * | ||
138 | * Just copies the address portion and family. Ignores port, scope, etc. | ||
139 | * Caller is responsible for making certain that dst is large enough to hold | ||
140 | * the address in src. Returns true if address family is supported. Returns | ||
141 | * false otherwise. | ||
142 | */ | ||
143 | static inline bool rpc_copy_addr(struct sockaddr *dst, | ||
144 | const struct sockaddr *src) | ||
145 | { | ||
146 | switch (src->sa_family) { | ||
147 | case AF_INET: | ||
148 | return __rpc_copy_addr4(dst, src); | ||
149 | case AF_INET6: | ||
150 | return __rpc_copy_addr6(dst, src); | ||
151 | } | ||
152 | return false; | ||
153 | } | ||
154 | |||
155 | /** | ||
156 | * rpc_get_scope_id - return scopeid for a given sockaddr | ||
157 | * @sa: sockaddr to get scopeid from | ||
158 | * | ||
159 | * Returns the value of the sin6_scope_id for AF_INET6 addrs, or 0 if | ||
160 | * not an AF_INET6 address. | ||
161 | */ | ||
162 | static inline u32 rpc_get_scope_id(const struct sockaddr *sa) | ||
163 | { | ||
164 | if (sa->sa_family != AF_INET6) | ||
165 | return 0; | ||
166 | |||
167 | return ((struct sockaddr_in6 *) sa)->sin6_scope_id; | ||
168 | } | ||
169 | |||
170 | #endif /* _LINUX_SUNRPC_ADDR_H */ | ||
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h index f25ba922baaf..58fda1c3c783 100644 --- a/include/linux/sunrpc/auth.h +++ b/include/linux/sunrpc/auth.h | |||
@@ -17,14 +17,15 @@ | |||
17 | 17 | ||
18 | #include <linux/atomic.h> | 18 | #include <linux/atomic.h> |
19 | #include <linux/rcupdate.h> | 19 | #include <linux/rcupdate.h> |
20 | #include <linux/uidgid.h> | ||
20 | 21 | ||
21 | /* size of the nodename buffer */ | 22 | /* size of the nodename buffer */ |
22 | #define UNX_MAXNODENAME 32 | 23 | #define UNX_MAXNODENAME 32 |
23 | 24 | ||
24 | /* Work around the lack of a VFS credential */ | 25 | /* Work around the lack of a VFS credential */ |
25 | struct auth_cred { | 26 | struct auth_cred { |
26 | uid_t uid; | 27 | kuid_t uid; |
27 | gid_t gid; | 28 | kgid_t gid; |
28 | struct group_info *group_info; | 29 | struct group_info *group_info; |
29 | const char *principal; | 30 | const char *principal; |
30 | unsigned char machine_cred : 1; | 31 | unsigned char machine_cred : 1; |
@@ -48,7 +49,7 @@ struct rpc_cred { | |||
48 | unsigned long cr_flags; /* various flags */ | 49 | unsigned long cr_flags; /* various flags */ |
49 | atomic_t cr_count; /* ref count */ | 50 | atomic_t cr_count; /* ref count */ |
50 | 51 | ||
51 | uid_t cr_uid; | 52 | kuid_t cr_uid; |
52 | 53 | ||
53 | /* per-flavor data */ | 54 | /* per-flavor data */ |
54 | }; | 55 | }; |
diff --git a/include/linux/sunrpc/cache.h b/include/linux/sunrpc/cache.h index 5dc9ee4d616e..303399b1ba59 100644 --- a/include/linux/sunrpc/cache.h +++ b/include/linux/sunrpc/cache.h | |||
@@ -83,6 +83,10 @@ struct cache_detail { | |||
83 | int (*cache_upcall)(struct cache_detail *, | 83 | int (*cache_upcall)(struct cache_detail *, |
84 | struct cache_head *); | 84 | struct cache_head *); |
85 | 85 | ||
86 | void (*cache_request)(struct cache_detail *cd, | ||
87 | struct cache_head *ch, | ||
88 | char **bpp, int *blen); | ||
89 | |||
86 | int (*cache_parse)(struct cache_detail *, | 90 | int (*cache_parse)(struct cache_detail *, |
87 | char *buf, int len); | 91 | char *buf, int len); |
88 | 92 | ||
@@ -157,11 +161,7 @@ sunrpc_cache_update(struct cache_detail *detail, | |||
157 | struct cache_head *new, struct cache_head *old, int hash); | 161 | struct cache_head *new, struct cache_head *old, int hash); |
158 | 162 | ||
159 | extern int | 163 | extern int |
160 | sunrpc_cache_pipe_upcall(struct cache_detail *detail, struct cache_head *h, | 164 | sunrpc_cache_pipe_upcall(struct cache_detail *detail, struct cache_head *h); |
161 | void (*cache_request)(struct cache_detail *, | ||
162 | struct cache_head *, | ||
163 | char **, | ||
164 | int *)); | ||
165 | 165 | ||
166 | 166 | ||
167 | extern void cache_clean_deferred(void *owner); | 167 | extern void cache_clean_deferred(void *owner); |
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h index 34206b84d8da..2cf4ffaa3cd4 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h | |||
@@ -160,162 +160,11 @@ void rpc_setbufsize(struct rpc_clnt *, unsigned int, unsigned int); | |||
160 | int rpc_protocol(struct rpc_clnt *); | 160 | int rpc_protocol(struct rpc_clnt *); |
161 | struct net * rpc_net_ns(struct rpc_clnt *); | 161 | struct net * rpc_net_ns(struct rpc_clnt *); |
162 | size_t rpc_max_payload(struct rpc_clnt *); | 162 | size_t rpc_max_payload(struct rpc_clnt *); |
163 | unsigned long rpc_get_timeout(struct rpc_clnt *clnt); | ||
163 | void rpc_force_rebind(struct rpc_clnt *); | 164 | void rpc_force_rebind(struct rpc_clnt *); |
164 | size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t); | 165 | size_t rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t); |
165 | const char *rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t); | 166 | const char *rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t); |
166 | int rpc_localaddr(struct rpc_clnt *, struct sockaddr *, size_t); | 167 | int rpc_localaddr(struct rpc_clnt *, struct sockaddr *, size_t); |
167 | 168 | ||
168 | size_t rpc_ntop(const struct sockaddr *, char *, const size_t); | ||
169 | size_t rpc_pton(struct net *, const char *, const size_t, | ||
170 | struct sockaddr *, const size_t); | ||
171 | char * rpc_sockaddr2uaddr(const struct sockaddr *, gfp_t); | ||
172 | size_t rpc_uaddr2sockaddr(struct net *, const char *, const size_t, | ||
173 | struct sockaddr *, const size_t); | ||
174 | |||
175 | static inline unsigned short rpc_get_port(const struct sockaddr *sap) | ||
176 | { | ||
177 | switch (sap->sa_family) { | ||
178 | case AF_INET: | ||
179 | return ntohs(((struct sockaddr_in *)sap)->sin_port); | ||
180 | case AF_INET6: | ||
181 | return ntohs(((struct sockaddr_in6 *)sap)->sin6_port); | ||
182 | } | ||
183 | return 0; | ||
184 | } | ||
185 | |||
186 | static inline void rpc_set_port(struct sockaddr *sap, | ||
187 | const unsigned short port) | ||
188 | { | ||
189 | switch (sap->sa_family) { | ||
190 | case AF_INET: | ||
191 | ((struct sockaddr_in *)sap)->sin_port = htons(port); | ||
192 | break; | ||
193 | case AF_INET6: | ||
194 | ((struct sockaddr_in6 *)sap)->sin6_port = htons(port); | ||
195 | break; | ||
196 | } | ||
197 | } | ||
198 | |||
199 | #define IPV6_SCOPE_DELIMITER '%' | ||
200 | #define IPV6_SCOPE_ID_LEN sizeof("%nnnnnnnnnn") | ||
201 | |||
202 | static inline bool __rpc_cmp_addr4(const struct sockaddr *sap1, | ||
203 | const struct sockaddr *sap2) | ||
204 | { | ||
205 | const struct sockaddr_in *sin1 = (const struct sockaddr_in *)sap1; | ||
206 | const struct sockaddr_in *sin2 = (const struct sockaddr_in *)sap2; | ||
207 | |||
208 | return sin1->sin_addr.s_addr == sin2->sin_addr.s_addr; | ||
209 | } | ||
210 | |||
211 | static inline bool __rpc_copy_addr4(struct sockaddr *dst, | ||
212 | const struct sockaddr *src) | ||
213 | { | ||
214 | const struct sockaddr_in *ssin = (struct sockaddr_in *) src; | ||
215 | struct sockaddr_in *dsin = (struct sockaddr_in *) dst; | ||
216 | |||
217 | dsin->sin_family = ssin->sin_family; | ||
218 | dsin->sin_addr.s_addr = ssin->sin_addr.s_addr; | ||
219 | return true; | ||
220 | } | ||
221 | |||
222 | #if IS_ENABLED(CONFIG_IPV6) | ||
223 | static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1, | ||
224 | const struct sockaddr *sap2) | ||
225 | { | ||
226 | const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1; | ||
227 | const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2; | ||
228 | |||
229 | if (!ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr)) | ||
230 | return false; | ||
231 | else if (ipv6_addr_type(&sin1->sin6_addr) & IPV6_ADDR_LINKLOCAL) | ||
232 | return sin1->sin6_scope_id == sin2->sin6_scope_id; | ||
233 | |||
234 | return true; | ||
235 | } | ||
236 | |||
237 | static inline bool __rpc_copy_addr6(struct sockaddr *dst, | ||
238 | const struct sockaddr *src) | ||
239 | { | ||
240 | const struct sockaddr_in6 *ssin6 = (const struct sockaddr_in6 *) src; | ||
241 | struct sockaddr_in6 *dsin6 = (struct sockaddr_in6 *) dst; | ||
242 | |||
243 | dsin6->sin6_family = ssin6->sin6_family; | ||
244 | dsin6->sin6_addr = ssin6->sin6_addr; | ||
245 | return true; | ||
246 | } | ||
247 | #else /* !(IS_ENABLED(CONFIG_IPV6) */ | ||
248 | static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1, | ||
249 | const struct sockaddr *sap2) | ||
250 | { | ||
251 | return false; | ||
252 | } | ||
253 | |||
254 | static inline bool __rpc_copy_addr6(struct sockaddr *dst, | ||
255 | const struct sockaddr *src) | ||
256 | { | ||
257 | return false; | ||
258 | } | ||
259 | #endif /* !(IS_ENABLED(CONFIG_IPV6) */ | ||
260 | |||
261 | /** | ||
262 | * rpc_cmp_addr - compare the address portion of two sockaddrs. | ||
263 | * @sap1: first sockaddr | ||
264 | * @sap2: second sockaddr | ||
265 | * | ||
266 | * Just compares the family and address portion. Ignores port, scope, etc. | ||
267 | * Returns true if the addrs are equal, false if they aren't. | ||
268 | */ | ||
269 | static inline bool rpc_cmp_addr(const struct sockaddr *sap1, | ||
270 | const struct sockaddr *sap2) | ||
271 | { | ||
272 | if (sap1->sa_family == sap2->sa_family) { | ||
273 | switch (sap1->sa_family) { | ||
274 | case AF_INET: | ||
275 | return __rpc_cmp_addr4(sap1, sap2); | ||
276 | case AF_INET6: | ||
277 | return __rpc_cmp_addr6(sap1, sap2); | ||
278 | } | ||
279 | } | ||
280 | return false; | ||
281 | } | ||
282 | |||
283 | /** | ||
284 | * rpc_copy_addr - copy the address portion of one sockaddr to another | ||
285 | * @dst: destination sockaddr | ||
286 | * @src: source sockaddr | ||
287 | * | ||
288 | * Just copies the address portion and family. Ignores port, scope, etc. | ||
289 | * Caller is responsible for making certain that dst is large enough to hold | ||
290 | * the address in src. Returns true if address family is supported. Returns | ||
291 | * false otherwise. | ||
292 | */ | ||
293 | static inline bool rpc_copy_addr(struct sockaddr *dst, | ||
294 | const struct sockaddr *src) | ||
295 | { | ||
296 | switch (src->sa_family) { | ||
297 | case AF_INET: | ||
298 | return __rpc_copy_addr4(dst, src); | ||
299 | case AF_INET6: | ||
300 | return __rpc_copy_addr6(dst, src); | ||
301 | } | ||
302 | return false; | ||
303 | } | ||
304 | |||
305 | /** | ||
306 | * rpc_get_scope_id - return scopeid for a given sockaddr | ||
307 | * @sa: sockaddr to get scopeid from | ||
308 | * | ||
309 | * Returns the value of the sin6_scope_id for AF_INET6 addrs, or 0 if | ||
310 | * not an AF_INET6 address. | ||
311 | */ | ||
312 | static inline u32 rpc_get_scope_id(const struct sockaddr *sa) | ||
313 | { | ||
314 | if (sa->sa_family != AF_INET6) | ||
315 | return 0; | ||
316 | |||
317 | return ((struct sockaddr_in6 *) sa)->sin6_scope_id; | ||
318 | } | ||
319 | |||
320 | #endif /* __KERNEL__ */ | 169 | #endif /* __KERNEL__ */ |
321 | #endif /* _LINUX_SUNRPC_CLNT_H */ | 170 | #endif /* _LINUX_SUNRPC_CLNT_H */ |
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index b64f8eb0b973..84ca436b76c2 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
@@ -87,7 +87,6 @@ struct rpc_task { | |||
87 | tk_cred_retry : 2, | 87 | tk_cred_retry : 2, |
88 | tk_rebind_retry : 2; | 88 | tk_rebind_retry : 2; |
89 | }; | 89 | }; |
90 | #define tk_xprt tk_client->cl_xprt | ||
91 | 90 | ||
92 | /* support walking a list of tasks on a wait queue */ | 91 | /* support walking a list of tasks on a wait queue */ |
93 | #define task_for_each(task, pos, head) \ | 92 | #define task_for_each(task, pos, head) \ |
diff --git a/include/linux/sunrpc/svc.h b/include/linux/sunrpc/svc.h index 676ddf53b3ee..1f0216b9a6c9 100644 --- a/include/linux/sunrpc/svc.h +++ b/include/linux/sunrpc/svc.h | |||
@@ -50,6 +50,7 @@ struct svc_pool { | |||
50 | unsigned int sp_nrthreads; /* # of threads in pool */ | 50 | unsigned int sp_nrthreads; /* # of threads in pool */ |
51 | struct list_head sp_all_threads; /* all server threads */ | 51 | struct list_head sp_all_threads; /* all server threads */ |
52 | struct svc_pool_stats sp_stats; /* statistics on pool operation */ | 52 | struct svc_pool_stats sp_stats; /* statistics on pool operation */ |
53 | int sp_task_pending;/* has pending task */ | ||
53 | } ____cacheline_aligned_in_smp; | 54 | } ____cacheline_aligned_in_smp; |
54 | 55 | ||
55 | /* | 56 | /* |
diff --git a/include/linux/sunrpc/svcauth.h b/include/linux/sunrpc/svcauth.h index dd74084a9799..ff374ab30839 100644 --- a/include/linux/sunrpc/svcauth.h +++ b/include/linux/sunrpc/svcauth.h | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/cred.h> | 18 | #include <linux/cred.h> |
19 | 19 | ||
20 | struct svc_cred { | 20 | struct svc_cred { |
21 | uid_t cr_uid; | 21 | kuid_t cr_uid; |
22 | gid_t cr_gid; | 22 | kgid_t cr_gid; |
23 | struct group_info *cr_group_info; | 23 | struct group_info *cr_group_info; |
24 | u32 cr_flavor; /* pseudoflavor */ | 24 | u32 cr_flavor; /* pseudoflavor */ |
25 | char *cr_principal; /* for gss */ | 25 | char *cr_principal; /* for gss */ |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 63988990bd36..15f9204ee70b 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -56,7 +56,7 @@ struct xdr_buf { | |||
56 | struct kvec head[1], /* RPC header + non-page data */ | 56 | struct kvec head[1], /* RPC header + non-page data */ |
57 | tail[1]; /* Appended after page data */ | 57 | tail[1]; /* Appended after page data */ |
58 | 58 | ||
59 | struct page ** pages; /* Array of contiguous pages */ | 59 | struct page ** pages; /* Array of pages */ |
60 | unsigned int page_base, /* Start of page data */ | 60 | unsigned int page_base, /* Start of page data */ |
61 | page_len, /* Length of page data */ | 61 | page_len, /* Length of page data */ |
62 | flags; /* Flags for data disposition */ | 62 | flags; /* Flags for data disposition */ |
@@ -152,6 +152,7 @@ xdr_adjust_iovec(struct kvec *iov, __be32 *p) | |||
152 | extern void xdr_shift_buf(struct xdr_buf *, size_t); | 152 | extern void xdr_shift_buf(struct xdr_buf *, size_t); |
153 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); | 153 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); |
154 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int); | 154 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int); |
155 | extern void xdr_buf_trim(struct xdr_buf *, unsigned int); | ||
155 | extern int xdr_buf_read_netobj(struct xdr_buf *, struct xdr_netobj *, unsigned int); | 156 | extern int xdr_buf_read_netobj(struct xdr_buf *, struct xdr_netobj *, unsigned int); |
156 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); | 157 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
157 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); | 158 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 951cb9b7d02b..30834be03011 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -117,12 +117,12 @@ struct rpc_xprt_ops { | |||
117 | void (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task); | 117 | void (*alloc_slot)(struct rpc_xprt *xprt, struct rpc_task *task); |
118 | void (*rpcbind)(struct rpc_task *task); | 118 | void (*rpcbind)(struct rpc_task *task); |
119 | void (*set_port)(struct rpc_xprt *xprt, unsigned short port); | 119 | void (*set_port)(struct rpc_xprt *xprt, unsigned short port); |
120 | void (*connect)(struct rpc_task *task); | 120 | void (*connect)(struct rpc_xprt *xprt, struct rpc_task *task); |
121 | void * (*buf_alloc)(struct rpc_task *task, size_t size); | 121 | void * (*buf_alloc)(struct rpc_task *task, size_t size); |
122 | void (*buf_free)(void *buffer); | 122 | void (*buf_free)(void *buffer); |
123 | int (*send_request)(struct rpc_task *task); | 123 | int (*send_request)(struct rpc_task *task); |
124 | void (*set_retrans_timeout)(struct rpc_task *task); | 124 | void (*set_retrans_timeout)(struct rpc_task *task); |
125 | void (*timer)(struct rpc_task *task); | 125 | void (*timer)(struct rpc_xprt *xprt, struct rpc_task *task); |
126 | void (*release_request)(struct rpc_task *task); | 126 | void (*release_request)(struct rpc_task *task); |
127 | void (*close)(struct rpc_xprt *xprt); | 127 | void (*close)(struct rpc_xprt *xprt); |
128 | void (*destroy)(struct rpc_xprt *xprt); | 128 | void (*destroy)(struct rpc_xprt *xprt); |
@@ -313,7 +313,7 @@ void xprt_set_retrans_timeout_rtt(struct rpc_task *task); | |||
313 | void xprt_wake_pending_tasks(struct rpc_xprt *xprt, int status); | 313 | void xprt_wake_pending_tasks(struct rpc_xprt *xprt, int status); |
314 | void xprt_wait_for_buffer_space(struct rpc_task *task, rpc_action action); | 314 | void xprt_wait_for_buffer_space(struct rpc_task *task, rpc_action action); |
315 | void xprt_write_space(struct rpc_xprt *xprt); | 315 | void xprt_write_space(struct rpc_xprt *xprt); |
316 | void xprt_adjust_cwnd(struct rpc_task *task, int result); | 316 | void xprt_adjust_cwnd(struct rpc_xprt *xprt, struct rpc_task *task, int result); |
317 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid); | 317 | struct rpc_rqst * xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid); |
318 | void xprt_complete_rqst(struct rpc_task *task, int copied); | 318 | void xprt_complete_rqst(struct rpc_task *task, int copied); |
319 | void xprt_release_rqst_cong(struct rpc_task *task); | 319 | void xprt_release_rqst_cong(struct rpc_task *task); |