diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nfs_fs.h | 37 | ||||
-rw-r--r-- | include/linux/nfs_page.h | 7 | ||||
-rw-r--r-- | include/linux/nfs_xdr.h | 2 | ||||
-rw-r--r-- | include/linux/sunrpc/auth_gss.h | 2 | ||||
-rw-r--r-- | include/linux/sunrpc/clnt.h | 1 | ||||
-rw-r--r-- | include/linux/sunrpc/debug.h | 6 | ||||
-rw-r--r-- | include/linux/sunrpc/gss_krb5.h | 6 | ||||
-rw-r--r-- | include/linux/sunrpc/gss_spkm3.h | 34 | ||||
-rw-r--r-- | include/linux/sunrpc/sched.h | 11 | ||||
-rw-r--r-- | include/linux/sunrpc/xdr.h | 23 | ||||
-rw-r--r-- | include/linux/sunrpc/xprt.h | 37 |
11 files changed, 50 insertions, 116 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index 625ffea98561..04963063e620 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -33,6 +33,7 @@ | |||
33 | #define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */ | 33 | #define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */ |
34 | #define FLUSH_NOCOMMIT 32 /* Don't send the NFSv3/v4 COMMIT */ | 34 | #define FLUSH_NOCOMMIT 32 /* Don't send the NFSv3/v4 COMMIT */ |
35 | #define FLUSH_INVALIDATE 64 /* Invalidate the page cache */ | 35 | #define FLUSH_INVALIDATE 64 /* Invalidate the page cache */ |
36 | #define FLUSH_NOWRITEPAGE 128 /* Don't call writepage() */ | ||
36 | 37 | ||
37 | #ifdef __KERNEL__ | 38 | #ifdef __KERNEL__ |
38 | 39 | ||
@@ -427,19 +428,21 @@ extern int nfs_flush_incompatible(struct file *file, struct page *page); | |||
427 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); | 428 | extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); |
428 | extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); | 429 | extern int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); |
429 | extern void nfs_writedata_release(void *); | 430 | extern void nfs_writedata_release(void *); |
430 | 431 | extern int nfs_set_page_dirty(struct page *); | |
431 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) | ||
432 | struct nfs_write_data *nfs_commit_alloc(void); | ||
433 | void nfs_commit_free(struct nfs_write_data *p); | ||
434 | #endif | ||
435 | 432 | ||
436 | /* | 433 | /* |
437 | * Try to write back everything synchronously (but check the | 434 | * Try to write back everything synchronously (but check the |
438 | * return value!) | 435 | * return value!) |
439 | */ | 436 | */ |
440 | extern int nfs_sync_inode_wait(struct inode *, unsigned long, unsigned int, int); | 437 | extern long nfs_sync_mapping_wait(struct address_space *, struct writeback_control *, int); |
438 | extern int nfs_sync_mapping_range(struct address_space *, loff_t, loff_t, int); | ||
439 | extern int nfs_wb_all(struct inode *inode); | ||
440 | extern int nfs_wb_page(struct inode *inode, struct page* page); | ||
441 | extern int nfs_wb_page_priority(struct inode *inode, struct page* page, int how); | ||
441 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) | 442 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) |
442 | extern int nfs_commit_inode(struct inode *, int); | 443 | extern int nfs_commit_inode(struct inode *, int); |
444 | extern struct nfs_write_data *nfs_commit_alloc(void); | ||
445 | extern void nfs_commit_free(struct nfs_write_data *wdata); | ||
443 | extern void nfs_commit_release(void *wdata); | 446 | extern void nfs_commit_release(void *wdata); |
444 | #else | 447 | #else |
445 | static inline int | 448 | static inline int |
@@ -455,28 +458,6 @@ nfs_have_writebacks(struct inode *inode) | |||
455 | return NFS_I(inode)->npages != 0; | 458 | return NFS_I(inode)->npages != 0; |
456 | } | 459 | } |
457 | 460 | ||
458 | static inline int | ||
459 | nfs_wb_all(struct inode *inode) | ||
460 | { | ||
461 | int error = nfs_sync_inode_wait(inode, 0, 0, 0); | ||
462 | return (error < 0) ? error : 0; | ||
463 | } | ||
464 | |||
465 | /* | ||
466 | * Write back all requests on one page - we do this before reading it. | ||
467 | */ | ||
468 | static inline int nfs_wb_page_priority(struct inode *inode, struct page* page, int how) | ||
469 | { | ||
470 | int error = nfs_sync_inode_wait(inode, page->index, 1, | ||
471 | how | FLUSH_STABLE); | ||
472 | return (error < 0) ? error : 0; | ||
473 | } | ||
474 | |||
475 | static inline int nfs_wb_page(struct inode *inode, struct page* page) | ||
476 | { | ||
477 | return nfs_wb_page_priority(inode, page, 0); | ||
478 | } | ||
479 | |||
480 | /* | 461 | /* |
481 | * Allocate nfs_write_data structures | 462 | * Allocate nfs_write_data structures |
482 | */ | 463 | */ |
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index 1f7bd287c230..2e555d49c9b7 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
@@ -30,6 +30,8 @@ | |||
30 | #define PG_BUSY 0 | 30 | #define PG_BUSY 0 |
31 | #define PG_NEED_COMMIT 1 | 31 | #define PG_NEED_COMMIT 1 |
32 | #define PG_NEED_RESCHED 2 | 32 | #define PG_NEED_RESCHED 2 |
33 | #define PG_NEED_FLUSH 3 | ||
34 | #define PG_FLUSHING 4 | ||
33 | 35 | ||
34 | struct nfs_inode; | 36 | struct nfs_inode; |
35 | struct nfs_page { | 37 | struct nfs_page { |
@@ -60,8 +62,9 @@ extern void nfs_clear_request(struct nfs_page *req); | |||
60 | extern void nfs_release_request(struct nfs_page *req); | 62 | extern void nfs_release_request(struct nfs_page *req); |
61 | 63 | ||
62 | 64 | ||
63 | extern int nfs_scan_lock_dirty(struct nfs_inode *nfsi, struct list_head *dst, | 65 | extern long nfs_scan_dirty(struct address_space *mapping, |
64 | unsigned long idx_start, unsigned int npages); | 66 | struct writeback_control *wbc, |
67 | struct list_head *dst); | ||
65 | extern int nfs_scan_list(struct nfs_inode *nfsi, struct list_head *head, struct list_head *dst, | 68 | extern int nfs_scan_list(struct nfs_inode *nfsi, struct list_head *head, struct list_head *dst, |
66 | unsigned long idx_start, unsigned int npages); | 69 | unsigned long idx_start, unsigned int npages); |
67 | extern int nfs_coalesce_requests(struct list_head *, struct list_head *, | 70 | extern int nfs_coalesce_requests(struct list_head *, struct list_head *, |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 768c1ad5ff6f..9ee9da5e1cc9 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -785,8 +785,6 @@ struct nfs_rpc_ops { | |||
785 | int (*readlink)(struct inode *, struct page *, unsigned int, | 785 | int (*readlink)(struct inode *, struct page *, unsigned int, |
786 | unsigned int); | 786 | unsigned int); |
787 | int (*read) (struct nfs_read_data *); | 787 | int (*read) (struct nfs_read_data *); |
788 | int (*write) (struct nfs_write_data *); | ||
789 | int (*commit) (struct nfs_write_data *); | ||
790 | int (*create) (struct inode *, struct dentry *, | 788 | int (*create) (struct inode *, struct dentry *, |
791 | struct iattr *, int, struct nameidata *); | 789 | struct iattr *, int, struct nameidata *); |
792 | int (*remove) (struct inode *, struct qstr *); | 790 | int (*remove) (struct inode *, struct qstr *); |
diff --git a/include/linux/sunrpc/auth_gss.h b/include/linux/sunrpc/auth_gss.h index 97b62e97dd8d..2db2fbf34947 100644 --- a/include/linux/sunrpc/auth_gss.h +++ b/include/linux/sunrpc/auth_gss.h | |||
@@ -90,8 +90,6 @@ struct gss_cred { | |||
90 | #define gc_flags gc_base.cr_flags | 90 | #define gc_flags gc_base.cr_flags |
91 | #define gc_expire gc_base.cr_expire | 91 | #define gc_expire gc_base.cr_expire |
92 | 92 | ||
93 | void print_hexl(u32 *p, u_int length, u_int offset); | ||
94 | |||
95 | #endif /* __KERNEL__ */ | 93 | #endif /* __KERNEL__ */ |
96 | #endif /* _LINUX_SUNRPC_AUTH_GSS_H */ | 94 | #endif /* _LINUX_SUNRPC_AUTH_GSS_H */ |
97 | 95 | ||
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h index f6d1d646ce05..a1be89deb3af 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h | |||
@@ -53,6 +53,7 @@ struct rpc_clnt { | |||
53 | struct dentry * cl_dentry; /* inode */ | 53 | struct dentry * cl_dentry; /* inode */ |
54 | struct rpc_clnt * cl_parent; /* Points to parent of clones */ | 54 | struct rpc_clnt * cl_parent; /* Points to parent of clones */ |
55 | struct rpc_rtt cl_rtt_default; | 55 | struct rpc_rtt cl_rtt_default; |
56 | struct rpc_program * cl_program; | ||
56 | char cl_inline_name[32]; | 57 | char cl_inline_name[32]; |
57 | }; | 58 | }; |
58 | 59 | ||
diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h index e4729aa67654..60fce3c92857 100644 --- a/include/linux/sunrpc/debug.h +++ b/include/linux/sunrpc/debug.h | |||
@@ -62,12 +62,6 @@ extern unsigned int nlm_debug; | |||
62 | # define RPC_IFDEBUG(x) | 62 | # define RPC_IFDEBUG(x) |
63 | #endif | 63 | #endif |
64 | 64 | ||
65 | #ifdef RPC_PROFILE | ||
66 | # define pprintk(args...) printk(## args) | ||
67 | #else | ||
68 | # define pprintk(args...) do ; while (0) | ||
69 | #endif | ||
70 | |||
71 | /* | 65 | /* |
72 | * Sysctl interface for RPC debugging | 66 | * Sysctl interface for RPC debugging |
73 | */ | 67 | */ |
diff --git a/include/linux/sunrpc/gss_krb5.h b/include/linux/sunrpc/gss_krb5.h index e30ba201910a..5a4b1e0206e3 100644 --- a/include/linux/sunrpc/gss_krb5.h +++ b/include/linux/sunrpc/gss_krb5.h | |||
@@ -42,10 +42,6 @@ | |||
42 | 42 | ||
43 | struct krb5_ctx { | 43 | struct krb5_ctx { |
44 | int initiate; /* 1 = initiating, 0 = accepting */ | 44 | int initiate; /* 1 = initiating, 0 = accepting */ |
45 | int seed_init; | ||
46 | unsigned char seed[16]; | ||
47 | int signalg; | ||
48 | int sealalg; | ||
49 | struct crypto_blkcipher *enc; | 45 | struct crypto_blkcipher *enc; |
50 | struct crypto_blkcipher *seq; | 46 | struct crypto_blkcipher *seq; |
51 | s32 endtime; | 47 | s32 endtime; |
@@ -117,7 +113,7 @@ enum seal_alg { | |||
117 | #define ENCTYPE_UNKNOWN 0x01ff | 113 | #define ENCTYPE_UNKNOWN 0x01ff |
118 | 114 | ||
119 | s32 | 115 | s32 |
120 | make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, | 116 | make_checksum(char *, char *header, int hdrlen, struct xdr_buf *body, |
121 | int body_offset, struct xdr_netobj *cksum); | 117 | int body_offset, struct xdr_netobj *cksum); |
122 | 118 | ||
123 | u32 gss_get_mic_kerberos(struct gss_ctx *, struct xdr_buf *, | 119 | u32 gss_get_mic_kerberos(struct gss_ctx *, struct xdr_buf *, |
diff --git a/include/linux/sunrpc/gss_spkm3.h b/include/linux/sunrpc/gss_spkm3.h index 2cf3fbb40b4f..e3e6a3437f8b 100644 --- a/include/linux/sunrpc/gss_spkm3.h +++ b/include/linux/sunrpc/gss_spkm3.h | |||
@@ -12,27 +12,19 @@ | |||
12 | #include <linux/sunrpc/gss_asn1.h> | 12 | #include <linux/sunrpc/gss_asn1.h> |
13 | 13 | ||
14 | struct spkm3_ctx { | 14 | struct spkm3_ctx { |
15 | struct xdr_netobj ctx_id; /* per message context id */ | 15 | struct xdr_netobj ctx_id; /* per message context id */ |
16 | int qop; /* negotiated qop */ | 16 | int endtime; /* endtime of the context */ |
17 | struct xdr_netobj mech_used; | 17 | struct xdr_netobj mech_used; |
18 | unsigned int ret_flags ; | 18 | unsigned int ret_flags ; |
19 | unsigned int req_flags ; | 19 | struct xdr_netobj conf_alg; |
20 | struct xdr_netobj share_key; | 20 | struct xdr_netobj derived_conf_key; |
21 | int conf_alg; | 21 | struct xdr_netobj intg_alg; |
22 | struct crypto_blkcipher *derived_conf_key; | 22 | struct xdr_netobj derived_integ_key; |
23 | int intg_alg; | ||
24 | struct crypto_blkcipher *derived_integ_key; | ||
25 | int keyestb_alg; /* alg used to get share_key */ | ||
26 | int owf_alg; /* one way function */ | ||
27 | }; | 23 | }; |
28 | 24 | ||
29 | /* from openssl/objects.h */ | 25 | /* OIDs declarations for K-ALG, I-ALG, C-ALG, and OWF-ALG */ |
30 | /* XXX need SEAL_ALG_NONE */ | 26 | extern const struct xdr_netobj hmac_md5_oid; |
31 | #define NID_md5 4 | 27 | extern const struct xdr_netobj cast5_cbc_oid; |
32 | #define NID_dhKeyAgreement 28 | ||
33 | #define NID_des_cbc 31 | ||
34 | #define NID_sha1 64 | ||
35 | #define NID_cast5_cbc 108 | ||
36 | 28 | ||
37 | /* SPKM InnerContext Token types */ | 29 | /* SPKM InnerContext Token types */ |
38 | 30 | ||
@@ -46,11 +38,13 @@ u32 spkm3_make_token(struct spkm3_ctx *ctx, struct xdr_buf * text, struct xdr_ne | |||
46 | u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struct xdr_buf *message_buffer, int toktype); | 38 | u32 spkm3_read_token(struct spkm3_ctx *ctx, struct xdr_netobj *read_token, struct xdr_buf *message_buffer, int toktype); |
47 | 39 | ||
48 | #define CKSUMTYPE_RSA_MD5 0x0007 | 40 | #define CKSUMTYPE_RSA_MD5 0x0007 |
41 | #define CKSUMTYPE_HMAC_MD5 0x0008 | ||
49 | 42 | ||
50 | s32 make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, | 43 | s32 make_spkm3_checksum(s32 cksumtype, struct xdr_netobj *key, char *header, |
51 | int body_offset, struct xdr_netobj *cksum); | 44 | unsigned int hdrlen, struct xdr_buf *body, |
45 | unsigned int body_offset, struct xdr_netobj *cksum); | ||
52 | void asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits); | 46 | void asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits); |
53 | int decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, | 47 | int decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, |
54 | int explen); | 48 | int explen); |
55 | void spkm3_mic_header(unsigned char **hdrbuf, unsigned int *hdrlen, | 49 | void spkm3_mic_header(unsigned char **hdrbuf, unsigned int *hdrlen, |
56 | unsigned char *ctxhdr, int elen, int zbit); | 50 | unsigned char *ctxhdr, int elen, int zbit); |
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index 0746c3b16f3a..97c761652581 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/timer.h> | 12 | #include <linux/timer.h> |
13 | #include <linux/sunrpc/types.h> | 13 | #include <linux/sunrpc/types.h> |
14 | #include <linux/rcupdate.h> | ||
14 | #include <linux/spinlock.h> | 15 | #include <linux/spinlock.h> |
15 | #include <linux/wait.h> | 16 | #include <linux/wait.h> |
16 | #include <linux/workqueue.h> | 17 | #include <linux/workqueue.h> |
@@ -85,6 +86,7 @@ struct rpc_task { | |||
85 | union { | 86 | union { |
86 | struct work_struct tk_work; /* Async task work queue */ | 87 | struct work_struct tk_work; /* Async task work queue */ |
87 | struct rpc_wait tk_wait; /* RPC wait */ | 88 | struct rpc_wait tk_wait; /* RPC wait */ |
89 | struct rcu_head tk_rcu; /* for task deletion */ | ||
88 | } u; | 90 | } u; |
89 | 91 | ||
90 | unsigned short tk_timeouts; /* maj timeouts */ | 92 | unsigned short tk_timeouts; /* maj timeouts */ |
@@ -178,13 +180,6 @@ struct rpc_call_ops { | |||
178 | } while (0) | 180 | } while (0) |
179 | 181 | ||
180 | #define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) | 182 | #define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) |
181 | #define rpc_set_active(t) (set_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate)) | ||
182 | #define rpc_clear_active(t) \ | ||
183 | do { \ | ||
184 | smp_mb__before_clear_bit(); \ | ||
185 | clear_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate); \ | ||
186 | smp_mb__after_clear_bit(); \ | ||
187 | } while(0) | ||
188 | 183 | ||
189 | /* | 184 | /* |
190 | * Task priorities. | 185 | * Task priorities. |
@@ -254,8 +249,10 @@ struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags, | |||
254 | void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, | 249 | void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, |
255 | int flags, const struct rpc_call_ops *ops, | 250 | int flags, const struct rpc_call_ops *ops, |
256 | void *data); | 251 | void *data); |
252 | void rpc_put_task(struct rpc_task *); | ||
257 | void rpc_release_task(struct rpc_task *); | 253 | void rpc_release_task(struct rpc_task *); |
258 | void rpc_exit_task(struct rpc_task *); | 254 | void rpc_exit_task(struct rpc_task *); |
255 | void rpc_release_calldata(const struct rpc_call_ops *, void *); | ||
259 | void rpc_killall_tasks(struct rpc_clnt *); | 256 | void rpc_killall_tasks(struct rpc_clnt *); |
260 | int rpc_execute(struct rpc_task *); | 257 | int rpc_execute(struct rpc_task *); |
261 | void rpc_init_priority_wait_queue(struct rpc_wait_queue *, const char *); | 258 | void rpc_init_priority_wait_queue(struct rpc_wait_queue *, const char *); |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 9a527c364394..9e340fa23c06 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/uio.h> | 12 | #include <linux/uio.h> |
13 | #include <asm/byteorder.h> | 13 | #include <asm/byteorder.h> |
14 | #include <linux/scatterlist.h> | ||
14 | 15 | ||
15 | /* | 16 | /* |
16 | * Buffer adjustment | 17 | * Buffer adjustment |
@@ -139,29 +140,30 @@ xdr_adjust_iovec(struct kvec *iov, __be32 *p) | |||
139 | */ | 140 | */ |
140 | extern void xdr_shift_buf(struct xdr_buf *, size_t); | 141 | extern void xdr_shift_buf(struct xdr_buf *, size_t); |
141 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); | 142 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); |
142 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, int, int); | 143 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int); |
143 | extern int xdr_buf_read_netobj(struct xdr_buf *, struct xdr_netobj *, int); | 144 | extern int xdr_buf_read_netobj(struct xdr_buf *, struct xdr_netobj *, unsigned int); |
144 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, int, void *, int); | 145 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
145 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, int, void *, int); | 146 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
146 | 147 | ||
147 | /* | 148 | /* |
148 | * Helper structure for copying from an sk_buff. | 149 | * Helper structure for copying from an sk_buff. |
149 | */ | 150 | */ |
150 | typedef struct { | 151 | struct xdr_skb_reader { |
151 | struct sk_buff *skb; | 152 | struct sk_buff *skb; |
152 | unsigned int offset; | 153 | unsigned int offset; |
153 | size_t count; | 154 | size_t count; |
154 | __wsum csum; | 155 | __wsum csum; |
155 | } skb_reader_t; | 156 | }; |
156 | 157 | ||
157 | typedef size_t (*skb_read_actor_t)(skb_reader_t *desc, void *to, size_t len); | 158 | typedef size_t (*xdr_skb_read_actor)(struct xdr_skb_reader *desc, void *to, size_t len); |
158 | 159 | ||
160 | size_t xdr_skb_read_bits(struct xdr_skb_reader *desc, void *to, size_t len); | ||
159 | extern int csum_partial_copy_to_xdr(struct xdr_buf *, struct sk_buff *); | 161 | extern int csum_partial_copy_to_xdr(struct xdr_buf *, struct sk_buff *); |
160 | extern ssize_t xdr_partial_copy_from_skb(struct xdr_buf *, unsigned int, | 162 | extern ssize_t xdr_partial_copy_from_skb(struct xdr_buf *, unsigned int, |
161 | skb_reader_t *, skb_read_actor_t); | 163 | struct xdr_skb_reader *, xdr_skb_read_actor); |
162 | 164 | ||
163 | extern int xdr_encode_word(struct xdr_buf *, int, u32); | 165 | extern int xdr_encode_word(struct xdr_buf *, unsigned int, u32); |
164 | extern int xdr_decode_word(struct xdr_buf *, int, u32 *); | 166 | extern int xdr_decode_word(struct xdr_buf *, unsigned int, u32 *); |
165 | 167 | ||
166 | struct xdr_array2_desc; | 168 | struct xdr_array2_desc; |
167 | typedef int (*xdr_xcode_elem_t)(struct xdr_array2_desc *desc, void *elem); | 169 | typedef int (*xdr_xcode_elem_t)(struct xdr_array2_desc *desc, void *elem); |
@@ -196,6 +198,7 @@ extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 | |||
196 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); | 198 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); |
197 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); | 199 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); |
198 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); | 200 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); |
201 | extern int xdr_process_buf(struct xdr_buf *buf, unsigned int offset, unsigned int len, int (*actor)(struct scatterlist *, void *), void *data); | ||
199 | 202 | ||
200 | #endif /* __KERNEL__ */ | 203 | #endif /* __KERNEL__ */ |
201 | 204 | ||
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h index 3e04c1512fc4..f780e72fc417 100644 --- a/include/linux/sunrpc/xprt.h +++ b/include/linux/sunrpc/xprt.h | |||
@@ -106,7 +106,6 @@ struct rpc_rqst { | |||
106 | 106 | ||
107 | struct rpc_xprt_ops { | 107 | struct rpc_xprt_ops { |
108 | void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); | 108 | void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize); |
109 | char * (*print_addr)(struct rpc_xprt *xprt, enum rpc_display_format_t format); | ||
110 | int (*reserve_xprt)(struct rpc_task *task); | 109 | int (*reserve_xprt)(struct rpc_task *task); |
111 | void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); | 110 | void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task); |
112 | void (*rpcbind)(struct rpc_task *task); | 111 | void (*rpcbind)(struct rpc_task *task); |
@@ -126,8 +125,6 @@ struct rpc_xprt_ops { | |||
126 | struct rpc_xprt { | 125 | struct rpc_xprt { |
127 | struct kref kref; /* Reference count */ | 126 | struct kref kref; /* Reference count */ |
128 | struct rpc_xprt_ops * ops; /* transport methods */ | 127 | struct rpc_xprt_ops * ops; /* transport methods */ |
129 | struct socket * sock; /* BSD socket layer */ | ||
130 | struct sock * inet; /* INET layer */ | ||
131 | 128 | ||
132 | struct rpc_timeout timeout; /* timeout parms */ | 129 | struct rpc_timeout timeout; /* timeout parms */ |
133 | struct sockaddr_storage addr; /* server address */ | 130 | struct sockaddr_storage addr; /* server address */ |
@@ -137,9 +134,6 @@ struct rpc_xprt { | |||
137 | unsigned long cong; /* current congestion */ | 134 | unsigned long cong; /* current congestion */ |
138 | unsigned long cwnd; /* congestion window */ | 135 | unsigned long cwnd; /* congestion window */ |
139 | 136 | ||
140 | size_t rcvsize, /* transport rcv buffer size */ | ||
141 | sndsize; /* transport send buffer size */ | ||
142 | |||
143 | size_t max_payload; /* largest RPC payload size, | 137 | size_t max_payload; /* largest RPC payload size, |
144 | in bytes */ | 138 | in bytes */ |
145 | unsigned int tsh_size; /* size of transport specific | 139 | unsigned int tsh_size; /* size of transport specific |
@@ -158,27 +152,11 @@ struct rpc_xprt { | |||
158 | resvport : 1; /* use a reserved port */ | 152 | resvport : 1; /* use a reserved port */ |
159 | 153 | ||
160 | /* | 154 | /* |
161 | * XID | ||
162 | */ | ||
163 | __u32 xid; /* Next XID value to use */ | ||
164 | |||
165 | /* | ||
166 | * State of TCP reply receive stuff | ||
167 | */ | ||
168 | __be32 tcp_recm, /* Fragment header */ | ||
169 | tcp_xid; /* Current XID */ | ||
170 | u32 tcp_reclen, /* fragment length */ | ||
171 | tcp_offset; /* fragment offset */ | ||
172 | unsigned long tcp_copied, /* copied to request */ | ||
173 | tcp_flags; | ||
174 | /* | ||
175 | * Connection of transports | 155 | * Connection of transports |
176 | */ | 156 | */ |
177 | unsigned long connect_timeout, | 157 | unsigned long connect_timeout, |
178 | bind_timeout, | 158 | bind_timeout, |
179 | reestablish_timeout; | 159 | reestablish_timeout; |
180 | struct delayed_work connect_worker; | ||
181 | unsigned short port; | ||
182 | 160 | ||
183 | /* | 161 | /* |
184 | * Disconnection of idle transports | 162 | * Disconnection of idle transports |
@@ -193,8 +171,8 @@ struct rpc_xprt { | |||
193 | */ | 171 | */ |
194 | spinlock_t transport_lock; /* lock transport info */ | 172 | spinlock_t transport_lock; /* lock transport info */ |
195 | spinlock_t reserve_lock; /* lock slot table */ | 173 | spinlock_t reserve_lock; /* lock slot table */ |
174 | u32 xid; /* Next XID value to use */ | ||
196 | struct rpc_task * snd_task; /* Task blocked in send */ | 175 | struct rpc_task * snd_task; /* Task blocked in send */ |
197 | |||
198 | struct list_head recv; | 176 | struct list_head recv; |
199 | 177 | ||
200 | struct { | 178 | struct { |
@@ -210,18 +188,9 @@ struct rpc_xprt { | |||
210 | bklog_u; /* backlog queue utilization */ | 188 | bklog_u; /* backlog queue utilization */ |
211 | } stat; | 189 | } stat; |
212 | 190 | ||
213 | void (*old_data_ready)(struct sock *, int); | ||
214 | void (*old_state_change)(struct sock *); | ||
215 | void (*old_write_space)(struct sock *); | ||
216 | |||
217 | char * address_strings[RPC_DISPLAY_MAX]; | 191 | char * address_strings[RPC_DISPLAY_MAX]; |
218 | }; | 192 | }; |
219 | 193 | ||
220 | #define XPRT_LAST_FRAG (1 << 0) | ||
221 | #define XPRT_COPY_RECM (1 << 1) | ||
222 | #define XPRT_COPY_XID (1 << 2) | ||
223 | #define XPRT_COPY_DATA (1 << 3) | ||
224 | |||
225 | #ifdef __KERNEL__ | 194 | #ifdef __KERNEL__ |
226 | 195 | ||
227 | /* | 196 | /* |
@@ -270,8 +239,8 @@ void xprt_disconnect(struct rpc_xprt *xprt); | |||
270 | /* | 239 | /* |
271 | * Socket transport setup operations | 240 | * Socket transport setup operations |
272 | */ | 241 | */ |
273 | int xs_setup_udp(struct rpc_xprt *xprt, struct rpc_timeout *to); | 242 | struct rpc_xprt * xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to); |
274 | int xs_setup_tcp(struct rpc_xprt *xprt, struct rpc_timeout *to); | 243 | struct rpc_xprt * xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to); |
275 | 244 | ||
276 | /* | 245 | /* |
277 | * Reserved bit positions in xprt->state | 246 | * Reserved bit positions in xprt->state |