diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 17:33:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-19 17:33:41 -0400 |
commit | 3e1f900bff40460d7bbab0ccd1a9efc3c70aee49 (patch) | |
tree | d0e2138ff61bdc9d1bd5b7ae5a1e75267d709afc /include | |
parent | 12795067cfa595434be0236b102a8eb20d578741 (diff) | |
parent | 0a87cf128f3d3bc6aa7b1040e73109c974ed875a (diff) |
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6:
NFSv4: handle lack of clientaddr in option string
NFSv4: debug print ntohl(status) in nfs client callback xdr code
SUNRPC: Clean up the sillyrename code
NFS: Introduce struct nfs_removeargs+nfs_removeres
NFS: Use dentry->d_time to store the parent directory verifier.
SUNRPC: move bkl locking and xdr proc invocation into a common helper
NFSv4: Fix the nfsv4 readlink reply buffer alignment
NFSv4: Fix the readdir reply buffer alignment
NFSv4: More NFSv4 xdr cleanups
NFSv4: Try to recover from getfh failures in nfs4_xdr_dec_open
NFSv4: 'constify' lookup arguments.
NFSv4: Don't fail nfs4_xdr_dec_open if decode_restorefh() failed
NFSv4: Fix open state recovery
NFSD/SUNRPC: Fix the automatic selection of RPCSEC_GSS
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nfs_fs.h | 4 | ||||
-rw-r--r-- | include/linux/nfs_xdr.h | 32 | ||||
-rw-r--r-- | include/linux/sunrpc/xdr.h | 16 |
3 files changed, 35 insertions, 17 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index c098ae194f79..9ba4aec37c50 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -407,8 +407,8 @@ extern void nfs_release_automount_timer(void); | |||
407 | /* | 407 | /* |
408 | * linux/fs/nfs/unlink.c | 408 | * linux/fs/nfs/unlink.c |
409 | */ | 409 | */ |
410 | extern int nfs_async_unlink(struct dentry *); | 410 | extern int nfs_async_unlink(struct inode *dir, struct dentry *dentry); |
411 | extern void nfs_complete_unlink(struct dentry *); | 411 | extern void nfs_complete_unlink(struct dentry *dentry, struct inode *); |
412 | 412 | ||
413 | /* | 413 | /* |
414 | * linux/fs/nfs/write.c | 414 | * linux/fs/nfs/write.c |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 38d77681cf27..cf74a4db84a5 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -278,6 +278,21 @@ struct nfs_writeres { | |||
278 | }; | 278 | }; |
279 | 279 | ||
280 | /* | 280 | /* |
281 | * Common arguments to the unlink call | ||
282 | */ | ||
283 | struct nfs_removeargs { | ||
284 | const struct nfs_fh *fh; | ||
285 | struct qstr name; | ||
286 | const u32 * bitmask; | ||
287 | }; | ||
288 | |||
289 | struct nfs_removeres { | ||
290 | const struct nfs_server *server; | ||
291 | struct nfs4_change_info cinfo; | ||
292 | struct nfs_fattr dir_attr; | ||
293 | }; | ||
294 | |||
295 | /* | ||
281 | * Argument struct for decode_entry function | 296 | * Argument struct for decode_entry function |
282 | */ | 297 | */ |
283 | struct nfs_entry { | 298 | struct nfs_entry { |
@@ -631,18 +646,6 @@ struct nfs4_readlink { | |||
631 | struct page ** pages; /* zero-copy data */ | 646 | struct page ** pages; /* zero-copy data */ |
632 | }; | 647 | }; |
633 | 648 | ||
634 | struct nfs4_remove_arg { | ||
635 | const struct nfs_fh * fh; | ||
636 | const struct qstr * name; | ||
637 | const u32 * bitmask; | ||
638 | }; | ||
639 | |||
640 | struct nfs4_remove_res { | ||
641 | const struct nfs_server * server; | ||
642 | struct nfs4_change_info cinfo; | ||
643 | struct nfs_fattr * dir_attr; | ||
644 | }; | ||
645 | |||
646 | struct nfs4_rename_arg { | 649 | struct nfs4_rename_arg { |
647 | const struct nfs_fh * old_dir; | 650 | const struct nfs_fh * old_dir; |
648 | const struct nfs_fh * new_dir; | 651 | const struct nfs_fh * new_dir; |
@@ -788,9 +791,8 @@ struct nfs_rpc_ops { | |||
788 | int (*create) (struct inode *, struct dentry *, | 791 | int (*create) (struct inode *, struct dentry *, |
789 | struct iattr *, int, struct nameidata *); | 792 | struct iattr *, int, struct nameidata *); |
790 | int (*remove) (struct inode *, struct qstr *); | 793 | int (*remove) (struct inode *, struct qstr *); |
791 | int (*unlink_setup) (struct rpc_message *, | 794 | void (*unlink_setup) (struct rpc_message *, struct inode *dir); |
792 | struct dentry *, struct qstr *); | 795 | int (*unlink_done) (struct rpc_task *, struct inode *); |
793 | int (*unlink_done) (struct dentry *, struct rpc_task *); | ||
794 | int (*rename) (struct inode *, struct qstr *, | 796 | int (*rename) (struct inode *, struct qstr *, |
795 | struct inode *, struct qstr *); | 797 | struct inode *, struct qstr *); |
796 | int (*link) (struct inode *, struct inode *, struct qstr *); | 798 | int (*link) (struct inode *, struct inode *, struct qstr *); |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 9e340fa23c06..c6b53d181bfa 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -12,6 +12,7 @@ | |||
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 | #include <linux/scatterlist.h> |
15 | #include <linux/smp_lock.h> | ||
15 | 16 | ||
16 | /* | 17 | /* |
17 | * Buffer adjustment | 18 | * Buffer adjustment |
@@ -36,6 +37,21 @@ struct xdr_netobj { | |||
36 | typedef int (*kxdrproc_t)(void *rqstp, __be32 *data, void *obj); | 37 | typedef int (*kxdrproc_t)(void *rqstp, __be32 *data, void *obj); |
37 | 38 | ||
38 | /* | 39 | /* |
40 | * We're still requiring the BKL in the xdr code until it's been | ||
41 | * more carefully audited, at which point this wrapper will become | ||
42 | * unnecessary. | ||
43 | */ | ||
44 | static inline int rpc_call_xdrproc(kxdrproc_t xdrproc, void *rqstp, __be32 *data, void *obj) | ||
45 | { | ||
46 | int ret; | ||
47 | |||
48 | lock_kernel(); | ||
49 | ret = xdrproc(rqstp, data, obj); | ||
50 | unlock_kernel(); | ||
51 | return ret; | ||
52 | } | ||
53 | |||
54 | /* | ||
39 | * Basic structure for transmission/reception of a client XDR message. | 55 | * Basic structure for transmission/reception of a client XDR message. |
40 | * Features a header (for a linear buffer containing RPC headers | 56 | * Features a header (for a linear buffer containing RPC headers |
41 | * and the data payload for short messages), and then an array of | 57 | * and the data payload for short messages), and then an array of |