diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 22:16:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-07-30 22:16:57 -0400 |
commit | 1fad1e9a747687a7399bf58e87974f9b1bbcae06 (patch) | |
tree | fde2dc9a35321e21c99e06d4b79d5fa06fd34679 /include | |
parent | bbeb0af25f493261c15ceee176c99b7fd6fd5479 (diff) | |
parent | f44106e2173f08ccb1c9195d85a6c22388b461c1 (diff) |
Merge tag 'nfs-for-3.6-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
Pull NFS client updates from Trond Myklebust:
"Features include:
- More preparatory patches for modularising NFSv2/v3/v4. Split out
the various NFSv2/v3/v4-specific code into separate files
- More preparation for the NFSv4 migration code
- Ensure that OPEN(O_CREATE) observes the pNFS mds threshold
parameters
- pNFS fast failover when the data servers are down
- Various cleanups and debugging patches"
* tag 'nfs-for-3.6-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (67 commits)
nfs: fix fl_type tests in NFSv4 code
NFS: fix pnfs regression with directio writes
NFS: fix pnfs regression with directio reads
sunrpc: clnt: Add missing braces
nfs: fix stub return type warnings
NFS: exit_nfs_v4() shouldn't be an __exit function
SUNRPC: Add a missing spin_unlock to gss_mech_list_pseudoflavors
NFS: Split out NFS v4 client functions
NFS: Split out the NFS v4 filesystem types
NFS: Create a single nfs_clone_super() function
NFS: Split out NFS v4 server creating code
NFS: Initialize the NFS v4 client from init_nfs_v4()
NFS: Move the v4 getroot code to nfs4getroot.c
NFS: Split out NFS v4 file operations
NFS: Initialize v4 sysctls from nfs_init_v4()
NFS: Create an init_nfs_v4() function
NFS: Split out NFS v4 inode operations
NFS: Split out NFS v3 inode operations
NFS: Split out NFS v2 inode operations
NFS: Clean up nfs4_proc_setclientid() and friends
...
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nfs_fs.h | 8 | ||||
-rw-r--r-- | include/linux/nfs_fs_sb.h | 3 | ||||
-rw-r--r-- | include/linux/nfs_page.h | 2 | ||||
-rw-r--r-- | include/linux/nfs_xdr.h | 16 | ||||
-rw-r--r-- | include/linux/sunrpc/auth.h | 2 | ||||
-rw-r--r-- | include/linux/sunrpc/gss_api.h | 3 | ||||
-rw-r--r-- | include/linux/sunrpc/xdr.h | 6 |
7 files changed, 24 insertions, 16 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index b23cfc120edb..4b6043c20f77 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -427,10 +427,6 @@ extern __be32 root_nfs_parse_addr(char *name); /*__init*/ | |||
427 | /* | 427 | /* |
428 | * linux/fs/nfs/file.c | 428 | * linux/fs/nfs/file.c |
429 | */ | 429 | */ |
430 | extern const struct inode_operations nfs_file_inode_operations; | ||
431 | #ifdef CONFIG_NFS_V3 | ||
432 | extern const struct inode_operations nfs3_file_inode_operations; | ||
433 | #endif /* CONFIG_NFS_V3 */ | ||
434 | extern const struct file_operations nfs_file_operations; | 430 | extern const struct file_operations nfs_file_operations; |
435 | #ifdef CONFIG_NFS_V4 | 431 | #ifdef CONFIG_NFS_V4 |
436 | extern const struct file_operations nfs4_file_operations; | 432 | extern const struct file_operations nfs4_file_operations; |
@@ -485,10 +481,6 @@ extern ssize_t nfs_file_direct_write(struct kiocb *iocb, | |||
485 | /* | 481 | /* |
486 | * linux/fs/nfs/dir.c | 482 | * linux/fs/nfs/dir.c |
487 | */ | 483 | */ |
488 | extern const struct inode_operations nfs_dir_inode_operations; | ||
489 | #ifdef CONFIG_NFS_V3 | ||
490 | extern const struct inode_operations nfs3_dir_inode_operations; | ||
491 | #endif /* CONFIG_NFS_V3 */ | ||
492 | extern const struct file_operations nfs_dir_operations; | 484 | extern const struct file_operations nfs_dir_operations; |
493 | extern const struct dentry_operations nfs_dentry_operations; | 485 | extern const struct dentry_operations nfs_dentry_operations; |
494 | 486 | ||
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index f58325a1d8fb..65327652c61a 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
@@ -69,10 +69,9 @@ struct nfs_client { | |||
69 | struct idmap * cl_idmap; | 69 | struct idmap * cl_idmap; |
70 | 70 | ||
71 | /* Our own IP address, as a null-terminated string. | 71 | /* Our own IP address, as a null-terminated string. |
72 | * This is used to generate the clientid, and the callback address. | 72 | * This is used to generate the mv0 callback address. |
73 | */ | 73 | */ |
74 | char cl_ipaddr[48]; | 74 | char cl_ipaddr[48]; |
75 | unsigned char cl_id_uniquifier; | ||
76 | u32 cl_cb_ident; /* v4.0 callback identifier */ | 75 | u32 cl_cb_ident; /* v4.0 callback identifier */ |
77 | const struct nfs4_minor_version_ops *cl_mvops; | 76 | const struct nfs4_minor_version_ops *cl_mvops; |
78 | 77 | ||
diff --git a/include/linux/nfs_page.h b/include/linux/nfs_page.h index 88d166b555e8..880805774f9f 100644 --- a/include/linux/nfs_page.h +++ b/include/linux/nfs_page.h | |||
@@ -42,7 +42,7 @@ struct nfs_page { | |||
42 | wb_bytes; /* Length of request */ | 42 | wb_bytes; /* Length of request */ |
43 | struct kref wb_kref; /* reference count */ | 43 | struct kref wb_kref; /* reference count */ |
44 | unsigned long wb_flags; | 44 | unsigned long wb_flags; |
45 | struct nfs_writeverf wb_verf; /* Commit cookie */ | 45 | struct nfs_write_verifier wb_verf; /* Commit cookie */ |
46 | }; | 46 | }; |
47 | 47 | ||
48 | struct nfs_pageio_descriptor; | 48 | struct nfs_pageio_descriptor; |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index d3b7c18b18f4..0e181c2320b7 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -514,9 +514,13 @@ struct nfs_writeargs { | |||
514 | struct nfs4_sequence_args seq_args; | 514 | struct nfs4_sequence_args seq_args; |
515 | }; | 515 | }; |
516 | 516 | ||
517 | struct nfs_write_verifier { | ||
518 | char data[8]; | ||
519 | }; | ||
520 | |||
517 | struct nfs_writeverf { | 521 | struct nfs_writeverf { |
522 | struct nfs_write_verifier verifier; | ||
518 | enum nfs3_stable_how committed; | 523 | enum nfs3_stable_how committed; |
519 | __be32 verifier[2]; | ||
520 | }; | 524 | }; |
521 | 525 | ||
522 | struct nfs_writeres { | 526 | struct nfs_writeres { |
@@ -1349,6 +1353,8 @@ struct nfs_renamedata { | |||
1349 | struct nfs_access_entry; | 1353 | struct nfs_access_entry; |
1350 | struct nfs_client; | 1354 | struct nfs_client; |
1351 | struct rpc_timeout; | 1355 | struct rpc_timeout; |
1356 | struct nfs_client_initdata; | ||
1357 | struct nfs_pageio_descriptor; | ||
1352 | 1358 | ||
1353 | /* | 1359 | /* |
1354 | * RPC procedure vector for NFSv2/NFSv3 demuxing | 1360 | * RPC procedure vector for NFSv2/NFSv3 demuxing |
@@ -1402,9 +1408,13 @@ struct nfs_rpc_ops { | |||
1402 | int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); | 1408 | int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); |
1403 | int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int); | 1409 | int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int); |
1404 | void (*read_setup) (struct nfs_read_data *, struct rpc_message *); | 1410 | void (*read_setup) (struct nfs_read_data *, struct rpc_message *); |
1411 | void (*read_pageio_init)(struct nfs_pageio_descriptor *, struct inode *, | ||
1412 | const struct nfs_pgio_completion_ops *); | ||
1405 | void (*read_rpc_prepare)(struct rpc_task *, struct nfs_read_data *); | 1413 | void (*read_rpc_prepare)(struct rpc_task *, struct nfs_read_data *); |
1406 | int (*read_done) (struct rpc_task *, struct nfs_read_data *); | 1414 | int (*read_done) (struct rpc_task *, struct nfs_read_data *); |
1407 | void (*write_setup) (struct nfs_write_data *, struct rpc_message *); | 1415 | void (*write_setup) (struct nfs_write_data *, struct rpc_message *); |
1416 | void (*write_pageio_init)(struct nfs_pageio_descriptor *, struct inode *, int, | ||
1417 | const struct nfs_pgio_completion_ops *); | ||
1408 | void (*write_rpc_prepare)(struct rpc_task *, struct nfs_write_data *); | 1418 | void (*write_rpc_prepare)(struct rpc_task *, struct nfs_write_data *); |
1409 | int (*write_done) (struct rpc_task *, struct nfs_write_data *); | 1419 | int (*write_done) (struct rpc_task *, struct nfs_write_data *); |
1410 | void (*commit_setup) (struct nfs_commit_data *, struct rpc_message *); | 1420 | void (*commit_setup) (struct nfs_commit_data *, struct rpc_message *); |
@@ -1418,9 +1428,13 @@ struct nfs_rpc_ops { | |||
1418 | struct nfs_open_context *ctx, | 1428 | struct nfs_open_context *ctx, |
1419 | int open_flags, | 1429 | int open_flags, |
1420 | struct iattr *iattr); | 1430 | struct iattr *iattr); |
1431 | int (*have_delegation)(struct inode *, fmode_t); | ||
1432 | int (*return_delegation)(struct inode *); | ||
1433 | struct nfs_client *(*alloc_client) (const struct nfs_client_initdata *); | ||
1421 | struct nfs_client * | 1434 | struct nfs_client * |
1422 | (*init_client) (struct nfs_client *, const struct rpc_timeout *, | 1435 | (*init_client) (struct nfs_client *, const struct rpc_timeout *, |
1423 | const char *, rpc_authflavor_t); | 1436 | const char *, rpc_authflavor_t); |
1437 | void (*free_client) (struct nfs_client *); | ||
1424 | }; | 1438 | }; |
1425 | 1439 | ||
1426 | /* | 1440 | /* |
diff --git a/include/linux/sunrpc/auth.h b/include/linux/sunrpc/auth.h index 492a36d72829..f25ba922baaf 100644 --- a/include/linux/sunrpc/auth.h +++ b/include/linux/sunrpc/auth.h | |||
@@ -101,6 +101,7 @@ struct rpc_authops { | |||
101 | struct rpc_cred * (*crcreate)(struct rpc_auth*, struct auth_cred *, int); | 101 | struct rpc_cred * (*crcreate)(struct rpc_auth*, struct auth_cred *, int); |
102 | int (*pipes_create)(struct rpc_auth *); | 102 | int (*pipes_create)(struct rpc_auth *); |
103 | void (*pipes_destroy)(struct rpc_auth *); | 103 | void (*pipes_destroy)(struct rpc_auth *); |
104 | int (*list_pseudoflavors)(rpc_authflavor_t *, int); | ||
104 | }; | 105 | }; |
105 | 106 | ||
106 | struct rpc_credops { | 107 | struct rpc_credops { |
@@ -135,6 +136,7 @@ int rpcauth_register(const struct rpc_authops *); | |||
135 | int rpcauth_unregister(const struct rpc_authops *); | 136 | int rpcauth_unregister(const struct rpc_authops *); |
136 | struct rpc_auth * rpcauth_create(rpc_authflavor_t, struct rpc_clnt *); | 137 | struct rpc_auth * rpcauth_create(rpc_authflavor_t, struct rpc_clnt *); |
137 | void rpcauth_release(struct rpc_auth *); | 138 | void rpcauth_release(struct rpc_auth *); |
139 | int rpcauth_list_flavors(rpc_authflavor_t *, int); | ||
138 | struct rpc_cred * rpcauth_lookup_credcache(struct rpc_auth *, struct auth_cred *, int); | 140 | struct rpc_cred * rpcauth_lookup_credcache(struct rpc_auth *, struct auth_cred *, int); |
139 | void rpcauth_init_cred(struct rpc_cred *, const struct auth_cred *, struct rpc_auth *, const struct rpc_credops *); | 141 | void rpcauth_init_cred(struct rpc_cred *, const struct auth_cred *, struct rpc_auth *, const struct rpc_credops *); |
140 | struct rpc_cred * rpcauth_lookupcred(struct rpc_auth *, int); | 142 | struct rpc_cred * rpcauth_lookupcred(struct rpc_auth *, int); |
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h index 332da61cf8b7..a19e2547ae6a 100644 --- a/include/linux/sunrpc/gss_api.h +++ b/include/linux/sunrpc/gss_api.h | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #ifdef __KERNEL__ | 15 | #ifdef __KERNEL__ |
16 | #include <linux/sunrpc/xdr.h> | 16 | #include <linux/sunrpc/xdr.h> |
17 | #include <linux/sunrpc/msg_prot.h> | ||
17 | #include <linux/uio.h> | 18 | #include <linux/uio.h> |
18 | 19 | ||
19 | /* The mechanism-independent gss-api context: */ | 20 | /* The mechanism-independent gss-api context: */ |
@@ -127,7 +128,7 @@ struct gss_api_mech *gss_mech_get_by_name(const char *); | |||
127 | struct gss_api_mech *gss_mech_get_by_pseudoflavor(u32); | 128 | struct gss_api_mech *gss_mech_get_by_pseudoflavor(u32); |
128 | 129 | ||
129 | /* Fill in an array with a list of supported pseudoflavors */ | 130 | /* Fill in an array with a list of supported pseudoflavors */ |
130 | int gss_mech_list_pseudoflavors(u32 *); | 131 | int gss_mech_list_pseudoflavors(rpc_authflavor_t *, int); |
131 | 132 | ||
132 | /* Just increments the mechanism's reference count and returns its input: */ | 133 | /* Just increments the mechanism's reference count and returns its input: */ |
133 | struct gss_api_mech * gss_mech_get(struct gss_api_mech *); | 134 | struct gss_api_mech * gss_mech_get(struct gss_api_mech *); |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index af70af333546..63988990bd36 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -104,8 +104,6 @@ __be32 *xdr_decode_string_inplace(__be32 *p, char **sp, unsigned int *lenp, | |||
104 | __be32 *xdr_encode_netobj(__be32 *p, const struct xdr_netobj *); | 104 | __be32 *xdr_encode_netobj(__be32 *p, const struct xdr_netobj *); |
105 | __be32 *xdr_decode_netobj(__be32 *p, struct xdr_netobj *); | 105 | __be32 *xdr_decode_netobj(__be32 *p, struct xdr_netobj *); |
106 | 106 | ||
107 | void xdr_encode_pages(struct xdr_buf *, struct page **, unsigned int, | ||
108 | unsigned int); | ||
109 | void xdr_inline_pages(struct xdr_buf *, unsigned int, | 107 | void xdr_inline_pages(struct xdr_buf *, unsigned int, |
110 | struct page **, unsigned int, unsigned int); | 108 | struct page **, unsigned int, unsigned int); |
111 | void xdr_terminate_string(struct xdr_buf *, const u32); | 109 | void xdr_terminate_string(struct xdr_buf *, const u32); |
@@ -205,6 +203,7 @@ struct xdr_stream { | |||
205 | struct kvec *iov; /* pointer to the current kvec */ | 203 | struct kvec *iov; /* pointer to the current kvec */ |
206 | struct kvec scratch; /* Scratch buffer */ | 204 | struct kvec scratch; /* Scratch buffer */ |
207 | struct page **page_ptr; /* pointer to the current page */ | 205 | struct page **page_ptr; /* pointer to the current page */ |
206 | unsigned int nwords; /* Remaining decode buffer length */ | ||
208 | }; | 207 | }; |
209 | 208 | ||
210 | /* | 209 | /* |
@@ -217,12 +216,13 @@ extern void xdr_init_encode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 | |||
217 | extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes); | 216 | extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes); |
218 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, | 217 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, |
219 | unsigned int base, unsigned int len); | 218 | unsigned int base, unsigned int len); |
219 | extern unsigned int xdr_stream_pos(const struct xdr_stream *xdr); | ||
220 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); | 220 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); |
221 | extern void xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, | 221 | extern void xdr_init_decode_pages(struct xdr_stream *xdr, struct xdr_buf *buf, |
222 | struct page **pages, unsigned int len); | 222 | struct page **pages, unsigned int len); |
223 | extern void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen); | 223 | extern void xdr_set_scratch_buffer(struct xdr_stream *xdr, void *buf, size_t buflen); |
224 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); | 224 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); |
225 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); | 225 | extern unsigned int xdr_read_pages(struct xdr_stream *xdr, unsigned int len); |
226 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); | 226 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); |
227 | extern int xdr_process_buf(struct xdr_buf *buf, unsigned int offset, unsigned int len, int (*actor)(struct scatterlist *, void *), void *data); | 227 | extern int xdr_process_buf(struct xdr_buf *buf, unsigned int offset, unsigned int len, int (*actor)(struct scatterlist *, void *), void *data); |
228 | 228 | ||