diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 16:48:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-10-25 16:48:29 -0400 |
commit | 74eb94b218d087798a52c0b4f1379b635287a4b8 (patch) | |
tree | 4e467c3014c2b1169f6f71d88cf5d1598f3ce28e /include | |
parent | 7b6181e06841f5ad15c4ff708b967b4db65a64de (diff) | |
parent | 9a84d38031c258a17bb39beed1e500eadee67407 (diff) |
Merge branch 'nfs-for-2.6.37' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* 'nfs-for-2.6.37' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (67 commits)
SUNRPC: Cleanup duplicate assignment in rpcauth_refreshcred
nfs: fix unchecked value
Ask for time_delta during fsinfo probe
Revalidate caches on lock
SUNRPC: After calling xprt_release(), we must restart from call_reserve
NFSv4: Fix up the 'dircount' hint in encode_readdir
NFSv4: Clean up nfs4_decode_dirent
NFSv4: nfs4_decode_dirent must clear entry->fattr->valid
NFSv4: Fix a regression in decode_getfattr
NFSv4: Fix up decode_attr_filehandle() to handle the case of empty fh pointer
NFS: Ensure we check all allocation return values in new readdir code
NFS: Readdir plus in v4
NFS: introduce generic decode_getattr function
NFS: check xdr_decode for errors
NFS: nfs_readdir_filler catch all errors
NFS: readdir with vmapped pages
NFS: remove page size checking code
NFS: decode_dirent should use an xdr_stream
SUNRPC: Add a helper function xdr_inline_peek
NFS: remove readdir plus limit
...
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/nfs_fs.h | 14 | ||||
-rw-r--r-- | include/linux/nfs_fs_sb.h | 1 | ||||
-rw-r--r-- | include/linux/nfs_idmap.h | 31 | ||||
-rw-r--r-- | include/linux/nfs_mount.h | 3 | ||||
-rw-r--r-- | include/linux/nfs_xdr.h | 78 | ||||
-rw-r--r-- | include/linux/sunrpc/clnt.h | 1 | ||||
-rw-r--r-- | include/linux/sunrpc/xdr.h | 2 |
7 files changed, 76 insertions, 54 deletions
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index d0edf7d823ae..a46e430d9622 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h | |||
@@ -360,10 +360,13 @@ extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); | |||
360 | extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); | 360 | extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); |
361 | extern void put_nfs_open_context(struct nfs_open_context *ctx); | 361 | extern void put_nfs_open_context(struct nfs_open_context *ctx); |
362 | extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, fmode_t mode); | 362 | extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, fmode_t mode); |
363 | extern struct nfs_open_context *alloc_nfs_open_context(struct path *path, struct rpc_cred *cred, fmode_t f_mode); | ||
364 | extern void nfs_file_set_open_context(struct file *filp, struct nfs_open_context *ctx); | ||
363 | extern struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx); | 365 | extern struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx); |
364 | extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx); | 366 | extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx); |
365 | extern u64 nfs_compat_user_ino64(u64 fileid); | 367 | extern u64 nfs_compat_user_ino64(u64 fileid); |
366 | extern void nfs_fattr_init(struct nfs_fattr *fattr); | 368 | extern void nfs_fattr_init(struct nfs_fattr *fattr); |
369 | extern unsigned long nfs_inc_attr_generation_counter(void); | ||
367 | 370 | ||
368 | extern struct nfs_fattr *nfs_alloc_fattr(void); | 371 | extern struct nfs_fattr *nfs_alloc_fattr(void); |
369 | 372 | ||
@@ -379,9 +382,12 @@ static inline void nfs_free_fhandle(const struct nfs_fh *fh) | |||
379 | kfree(fh); | 382 | kfree(fh); |
380 | } | 383 | } |
381 | 384 | ||
385 | /* | ||
386 | * linux/fs/nfs/nfsroot.c | ||
387 | */ | ||
388 | extern int nfs_root_data(char **root_device, char **root_data); /*__init*/ | ||
382 | /* linux/net/ipv4/ipconfig.c: trims ip addr off front of name, too. */ | 389 | /* linux/net/ipv4/ipconfig.c: trims ip addr off front of name, too. */ |
383 | extern __be32 root_nfs_parse_addr(char *name); /*__init*/ | 390 | extern __be32 root_nfs_parse_addr(char *name); /*__init*/ |
384 | extern unsigned long nfs_inc_attr_generation_counter(void); | ||
385 | 391 | ||
386 | /* | 392 | /* |
387 | * linux/fs/nfs/file.c | 393 | * linux/fs/nfs/file.c |
@@ -479,10 +485,10 @@ extern void nfs_release_automount_timer(void); | |||
479 | /* | 485 | /* |
480 | * linux/fs/nfs/unlink.c | 486 | * linux/fs/nfs/unlink.c |
481 | */ | 487 | */ |
482 | extern int nfs_async_unlink(struct inode *dir, struct dentry *dentry); | ||
483 | extern void nfs_complete_unlink(struct dentry *dentry, struct inode *); | 488 | extern void nfs_complete_unlink(struct dentry *dentry, struct inode *); |
484 | extern void nfs_block_sillyrename(struct dentry *dentry); | 489 | extern void nfs_block_sillyrename(struct dentry *dentry); |
485 | extern void nfs_unblock_sillyrename(struct dentry *dentry); | 490 | extern void nfs_unblock_sillyrename(struct dentry *dentry); |
491 | extern int nfs_sillyrename(struct inode *dir, struct dentry *dentry); | ||
486 | 492 | ||
487 | /* | 493 | /* |
488 | * linux/fs/nfs/write.c | 494 | * linux/fs/nfs/write.c |
@@ -584,10 +590,6 @@ nfs_fileid_to_ino_t(u64 fileid) | |||
584 | return ino; | 590 | return ino; |
585 | } | 591 | } |
586 | 592 | ||
587 | /* NFS root */ | ||
588 | |||
589 | extern void * nfs_root_data(void); | ||
590 | |||
591 | #define nfs_wait_event(clnt, wq, condition) \ | 593 | #define nfs_wait_event(clnt, wq, condition) \ |
592 | ({ \ | 594 | ({ \ |
593 | int __retval = wait_event_killable(wq, condition); \ | 595 | int __retval = wait_event_killable(wq, condition); \ |
diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index c82ee7cd6288..5eef862ec187 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h | |||
@@ -124,6 +124,7 @@ struct nfs_server { | |||
124 | 124 | ||
125 | struct nfs_fsid fsid; | 125 | struct nfs_fsid fsid; |
126 | __u64 maxfilesize; /* maximum file size */ | 126 | __u64 maxfilesize; /* maximum file size */ |
127 | struct timespec time_delta; /* smallest time granularity */ | ||
127 | unsigned long mount_time; /* when this fs was mounted */ | 128 | unsigned long mount_time; /* when this fs was mounted */ |
128 | dev_t s_dev; /* superblock dev numbers */ | 129 | dev_t s_dev; /* superblock dev numbers */ |
129 | 130 | ||
diff --git a/include/linux/nfs_idmap.h b/include/linux/nfs_idmap.h index 91a1c24e0cbf..e8352dc5afb5 100644 --- a/include/linux/nfs_idmap.h +++ b/include/linux/nfs_idmap.h | |||
@@ -66,13 +66,40 @@ struct idmap_msg { | |||
66 | /* Forward declaration to make this header independent of others */ | 66 | /* Forward declaration to make this header independent of others */ |
67 | struct nfs_client; | 67 | struct nfs_client; |
68 | 68 | ||
69 | #ifdef CONFIG_NFS_USE_NEW_IDMAPPER | ||
70 | |||
71 | int nfs_idmap_init(void); | ||
72 | void nfs_idmap_quit(void); | ||
73 | |||
74 | static inline int nfs_idmap_new(struct nfs_client *clp) | ||
75 | { | ||
76 | return 0; | ||
77 | } | ||
78 | |||
79 | static inline void nfs_idmap_delete(struct nfs_client *clp) | ||
80 | { | ||
81 | } | ||
82 | |||
83 | #else /* CONFIG_NFS_USE_NEW_IDMAPPER not set */ | ||
84 | |||
85 | static inline int nfs_idmap_init(void) | ||
86 | { | ||
87 | return 0; | ||
88 | } | ||
89 | |||
90 | static inline void nfs_idmap_quit(void) | ||
91 | { | ||
92 | } | ||
93 | |||
69 | int nfs_idmap_new(struct nfs_client *); | 94 | int nfs_idmap_new(struct nfs_client *); |
70 | void nfs_idmap_delete(struct nfs_client *); | 95 | void nfs_idmap_delete(struct nfs_client *); |
71 | 96 | ||
97 | #endif /* CONFIG_NFS_USE_NEW_IDMAPPER */ | ||
98 | |||
72 | int nfs_map_name_to_uid(struct nfs_client *, const char *, size_t, __u32 *); | 99 | int nfs_map_name_to_uid(struct nfs_client *, const char *, size_t, __u32 *); |
73 | int nfs_map_group_to_gid(struct nfs_client *, const char *, size_t, __u32 *); | 100 | int nfs_map_group_to_gid(struct nfs_client *, const char *, size_t, __u32 *); |
74 | int nfs_map_uid_to_name(struct nfs_client *, __u32, char *); | 101 | int nfs_map_uid_to_name(struct nfs_client *, __u32, char *, size_t); |
75 | int nfs_map_gid_to_group(struct nfs_client *, __u32, char *); | 102 | int nfs_map_gid_to_group(struct nfs_client *, __u32, char *, size_t); |
76 | 103 | ||
77 | extern unsigned int nfs_idmap_cache_timeout; | 104 | extern unsigned int nfs_idmap_cache_timeout; |
78 | #endif /* __KERNEL__ */ | 105 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/nfs_mount.h b/include/linux/nfs_mount.h index 5d59ae861aa6..576bddd72e04 100644 --- a/include/linux/nfs_mount.h +++ b/include/linux/nfs_mount.h | |||
@@ -71,4 +71,7 @@ struct nfs_mount_data { | |||
71 | #define NFS_MOUNT_NORESVPORT 0x40000 | 71 | #define NFS_MOUNT_NORESVPORT 0x40000 |
72 | #define NFS_MOUNT_LEGACY_INTERFACE 0x80000 | 72 | #define NFS_MOUNT_LEGACY_INTERFACE 0x80000 |
73 | 73 | ||
74 | #define NFS_MOUNT_LOCAL_FLOCK 0x100000 | ||
75 | #define NFS_MOUNT_LOCAL_FCNTL 0x200000 | ||
76 | |||
74 | #endif | 77 | #endif |
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index fc461926c412..da7a1300dc60 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -112,6 +112,7 @@ struct nfs_fsinfo { | |||
112 | __u32 wtmult; /* writes should be multiple of this */ | 112 | __u32 wtmult; /* writes should be multiple of this */ |
113 | __u32 dtpref; /* pref. readdir transfer size */ | 113 | __u32 dtpref; /* pref. readdir transfer size */ |
114 | __u64 maxfilesize; | 114 | __u64 maxfilesize; |
115 | struct timespec time_delta; /* server time granularity */ | ||
115 | __u32 lease_time; /* in seconds */ | 116 | __u32 lease_time; /* in seconds */ |
116 | }; | 117 | }; |
117 | 118 | ||
@@ -170,7 +171,7 @@ struct nfs4_sequence_args { | |||
170 | 171 | ||
171 | struct nfs4_sequence_res { | 172 | struct nfs4_sequence_res { |
172 | struct nfs4_session *sr_session; | 173 | struct nfs4_session *sr_session; |
173 | u8 sr_slotid; /* slot used to send request */ | 174 | struct nfs4_slot *sr_slot; /* slot used to send request */ |
174 | int sr_status; /* sequence operation status */ | 175 | int sr_status; /* sequence operation status */ |
175 | unsigned long sr_renewal_time; | 176 | unsigned long sr_renewal_time; |
176 | u32 sr_status_flags; | 177 | u32 sr_status_flags; |
@@ -400,6 +401,27 @@ struct nfs_removeres { | |||
400 | }; | 401 | }; |
401 | 402 | ||
402 | /* | 403 | /* |
404 | * Common arguments to the rename call | ||
405 | */ | ||
406 | struct nfs_renameargs { | ||
407 | const struct nfs_fh *old_dir; | ||
408 | const struct nfs_fh *new_dir; | ||
409 | const struct qstr *old_name; | ||
410 | const struct qstr *new_name; | ||
411 | const u32 *bitmask; | ||
412 | struct nfs4_sequence_args seq_args; | ||
413 | }; | ||
414 | |||
415 | struct nfs_renameres { | ||
416 | const struct nfs_server *server; | ||
417 | struct nfs4_change_info old_cinfo; | ||
418 | struct nfs_fattr *old_fattr; | ||
419 | struct nfs4_change_info new_cinfo; | ||
420 | struct nfs_fattr *new_fattr; | ||
421 | struct nfs4_sequence_res seq_res; | ||
422 | }; | ||
423 | |||
424 | /* | ||
403 | * Argument struct for decode_entry function | 425 | * Argument struct for decode_entry function |
404 | */ | 426 | */ |
405 | struct nfs_entry { | 427 | struct nfs_entry { |
@@ -434,15 +456,6 @@ struct nfs_createargs { | |||
434 | struct iattr * sattr; | 456 | struct iattr * sattr; |
435 | }; | 457 | }; |
436 | 458 | ||
437 | struct nfs_renameargs { | ||
438 | struct nfs_fh * fromfh; | ||
439 | const char * fromname; | ||
440 | unsigned int fromlen; | ||
441 | struct nfs_fh * tofh; | ||
442 | const char * toname; | ||
443 | unsigned int tolen; | ||
444 | }; | ||
445 | |||
446 | struct nfs_setattrargs { | 459 | struct nfs_setattrargs { |
447 | struct nfs_fh * fh; | 460 | struct nfs_fh * fh; |
448 | nfs4_stateid stateid; | 461 | nfs4_stateid stateid; |
@@ -586,15 +599,6 @@ struct nfs3_mknodargs { | |||
586 | dev_t rdev; | 599 | dev_t rdev; |
587 | }; | 600 | }; |
588 | 601 | ||
589 | struct nfs3_renameargs { | ||
590 | struct nfs_fh * fromfh; | ||
591 | const char * fromname; | ||
592 | unsigned int fromlen; | ||
593 | struct nfs_fh * tofh; | ||
594 | const char * toname; | ||
595 | unsigned int tolen; | ||
596 | }; | ||
597 | |||
598 | struct nfs3_linkargs { | 602 | struct nfs3_linkargs { |
599 | struct nfs_fh * fromfh; | 603 | struct nfs_fh * fromfh; |
600 | struct nfs_fh * tofh; | 604 | struct nfs_fh * tofh; |
@@ -629,11 +633,6 @@ struct nfs3_readlinkargs { | |||
629 | struct page ** pages; | 633 | struct page ** pages; |
630 | }; | 634 | }; |
631 | 635 | ||
632 | struct nfs3_renameres { | ||
633 | struct nfs_fattr * fromattr; | ||
634 | struct nfs_fattr * toattr; | ||
635 | }; | ||
636 | |||
637 | struct nfs3_linkres { | 636 | struct nfs3_linkres { |
638 | struct nfs_fattr * dir_attr; | 637 | struct nfs_fattr * dir_attr; |
639 | struct nfs_fattr * fattr; | 638 | struct nfs_fattr * fattr; |
@@ -780,6 +779,7 @@ struct nfs4_readdir_arg { | |||
780 | struct page ** pages; /* zero-copy data */ | 779 | struct page ** pages; /* zero-copy data */ |
781 | unsigned int pgbase; /* zero-copy data */ | 780 | unsigned int pgbase; /* zero-copy data */ |
782 | const u32 * bitmask; | 781 | const u32 * bitmask; |
782 | int plus; | ||
783 | struct nfs4_sequence_args seq_args; | 783 | struct nfs4_sequence_args seq_args; |
784 | }; | 784 | }; |
785 | 785 | ||
@@ -801,24 +801,6 @@ struct nfs4_readlink_res { | |||
801 | struct nfs4_sequence_res seq_res; | 801 | struct nfs4_sequence_res seq_res; |
802 | }; | 802 | }; |
803 | 803 | ||
804 | struct nfs4_rename_arg { | ||
805 | const struct nfs_fh * old_dir; | ||
806 | const struct nfs_fh * new_dir; | ||
807 | const struct qstr * old_name; | ||
808 | const struct qstr * new_name; | ||
809 | const u32 * bitmask; | ||
810 | struct nfs4_sequence_args seq_args; | ||
811 | }; | ||
812 | |||
813 | struct nfs4_rename_res { | ||
814 | const struct nfs_server * server; | ||
815 | struct nfs4_change_info old_cinfo; | ||
816 | struct nfs_fattr * old_fattr; | ||
817 | struct nfs4_change_info new_cinfo; | ||
818 | struct nfs_fattr * new_fattr; | ||
819 | struct nfs4_sequence_res seq_res; | ||
820 | }; | ||
821 | |||
822 | #define NFS4_SETCLIENTID_NAMELEN (127) | 804 | #define NFS4_SETCLIENTID_NAMELEN (127) |
823 | struct nfs4_setclientid { | 805 | struct nfs4_setclientid { |
824 | const nfs4_verifier * sc_verifier; | 806 | const nfs4_verifier * sc_verifier; |
@@ -1032,19 +1014,21 @@ struct nfs_rpc_ops { | |||
1032 | int (*readlink)(struct inode *, struct page *, unsigned int, | 1014 | int (*readlink)(struct inode *, struct page *, unsigned int, |
1033 | unsigned int); | 1015 | unsigned int); |
1034 | int (*create) (struct inode *, struct dentry *, | 1016 | int (*create) (struct inode *, struct dentry *, |
1035 | struct iattr *, int, struct nameidata *); | 1017 | struct iattr *, int, struct nfs_open_context *); |
1036 | int (*remove) (struct inode *, struct qstr *); | 1018 | int (*remove) (struct inode *, struct qstr *); |
1037 | void (*unlink_setup) (struct rpc_message *, struct inode *dir); | 1019 | void (*unlink_setup) (struct rpc_message *, struct inode *dir); |
1038 | int (*unlink_done) (struct rpc_task *, struct inode *); | 1020 | int (*unlink_done) (struct rpc_task *, struct inode *); |
1039 | int (*rename) (struct inode *, struct qstr *, | 1021 | int (*rename) (struct inode *, struct qstr *, |
1040 | struct inode *, struct qstr *); | 1022 | struct inode *, struct qstr *); |
1023 | void (*rename_setup) (struct rpc_message *msg, struct inode *dir); | ||
1024 | int (*rename_done) (struct rpc_task *task, struct inode *old_dir, struct inode *new_dir); | ||
1041 | int (*link) (struct inode *, struct inode *, struct qstr *); | 1025 | int (*link) (struct inode *, struct inode *, struct qstr *); |
1042 | int (*symlink) (struct inode *, struct dentry *, struct page *, | 1026 | int (*symlink) (struct inode *, struct dentry *, struct page *, |
1043 | unsigned int, struct iattr *); | 1027 | unsigned int, struct iattr *); |
1044 | int (*mkdir) (struct inode *, struct dentry *, struct iattr *); | 1028 | int (*mkdir) (struct inode *, struct dentry *, struct iattr *); |
1045 | int (*rmdir) (struct inode *, struct qstr *); | 1029 | int (*rmdir) (struct inode *, struct qstr *); |
1046 | int (*readdir) (struct dentry *, struct rpc_cred *, | 1030 | int (*readdir) (struct dentry *, struct rpc_cred *, |
1047 | u64, struct page *, unsigned int, int); | 1031 | u64, struct page **, unsigned int, int); |
1048 | int (*mknod) (struct inode *, struct dentry *, struct iattr *, | 1032 | int (*mknod) (struct inode *, struct dentry *, struct iattr *, |
1049 | dev_t); | 1033 | dev_t); |
1050 | int (*statfs) (struct nfs_server *, struct nfs_fh *, | 1034 | int (*statfs) (struct nfs_server *, struct nfs_fh *, |
@@ -1054,7 +1038,7 @@ struct nfs_rpc_ops { | |||
1054 | int (*pathconf) (struct nfs_server *, struct nfs_fh *, | 1038 | int (*pathconf) (struct nfs_server *, struct nfs_fh *, |
1055 | struct nfs_pathconf *); | 1039 | struct nfs_pathconf *); |
1056 | int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); | 1040 | int (*set_capabilities)(struct nfs_server *, struct nfs_fh *); |
1057 | __be32 *(*decode_dirent)(__be32 *, struct nfs_entry *, int plus); | 1041 | __be32 *(*decode_dirent)(struct xdr_stream *, struct nfs_entry *, struct nfs_server *, int plus); |
1058 | void (*read_setup) (struct nfs_read_data *, struct rpc_message *); | 1042 | void (*read_setup) (struct nfs_read_data *, struct rpc_message *); |
1059 | int (*read_done) (struct rpc_task *, struct nfs_read_data *); | 1043 | int (*read_done) (struct rpc_task *, struct nfs_read_data *); |
1060 | void (*write_setup) (struct nfs_write_data *, struct rpc_message *); | 1044 | void (*write_setup) (struct nfs_write_data *, struct rpc_message *); |
@@ -1065,6 +1049,10 @@ struct nfs_rpc_ops { | |||
1065 | int (*lock_check_bounds)(const struct file_lock *); | 1049 | int (*lock_check_bounds)(const struct file_lock *); |
1066 | void (*clear_acl_cache)(struct inode *); | 1050 | void (*clear_acl_cache)(struct inode *); |
1067 | void (*close_context)(struct nfs_open_context *ctx, int); | 1051 | void (*close_context)(struct nfs_open_context *ctx, int); |
1052 | struct inode * (*open_context) (struct inode *dir, | ||
1053 | struct nfs_open_context *ctx, | ||
1054 | int open_flags, | ||
1055 | struct iattr *iattr); | ||
1068 | }; | 1056 | }; |
1069 | 1057 | ||
1070 | /* | 1058 | /* |
diff --git a/include/linux/sunrpc/clnt.h b/include/linux/sunrpc/clnt.h index 85f38a63f098..c83df09a8e2b 100644 --- a/include/linux/sunrpc/clnt.h +++ b/include/linux/sunrpc/clnt.h | |||
@@ -137,7 +137,6 @@ int rpcb_register(u32, u32, int, unsigned short); | |||
137 | int rpcb_v4_register(const u32 program, const u32 version, | 137 | int rpcb_v4_register(const u32 program, const u32 version, |
138 | const struct sockaddr *address, | 138 | const struct sockaddr *address, |
139 | const char *netid); | 139 | const char *netid); |
140 | int rpcb_getport_sync(struct sockaddr_in *, u32, u32, int); | ||
141 | void rpcb_getport_async(struct rpc_task *); | 140 | void rpcb_getport_async(struct rpc_task *); |
142 | 141 | ||
143 | void rpc_call_start(struct rpc_task *); | 142 | void rpc_call_start(struct rpc_task *); |
diff --git a/include/linux/sunrpc/xdr.h b/include/linux/sunrpc/xdr.h index 35cf2e8cd7c6..ab91d86565fd 100644 --- a/include/linux/sunrpc/xdr.h +++ b/include/linux/sunrpc/xdr.h | |||
@@ -108,6 +108,7 @@ void xdr_encode_pages(struct xdr_buf *, struct page **, unsigned int, | |||
108 | unsigned int); | 108 | unsigned int); |
109 | void xdr_inline_pages(struct xdr_buf *, unsigned int, | 109 | void xdr_inline_pages(struct xdr_buf *, unsigned int, |
110 | struct page **, unsigned int, unsigned int); | 110 | struct page **, unsigned int, unsigned int); |
111 | void xdr_terminate_string(struct xdr_buf *, const u32); | ||
111 | 112 | ||
112 | static inline __be32 *xdr_encode_array(__be32 *p, const void *s, unsigned int len) | 113 | static inline __be32 *xdr_encode_array(__be32 *p, const void *s, unsigned int len) |
113 | { | 114 | { |
@@ -200,6 +201,7 @@ extern __be32 *xdr_reserve_space(struct xdr_stream *xdr, size_t nbytes); | |||
200 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, | 201 | extern void xdr_write_pages(struct xdr_stream *xdr, struct page **pages, |
201 | unsigned int base, unsigned int len); | 202 | unsigned int base, unsigned int len); |
202 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); | 203 | extern void xdr_init_decode(struct xdr_stream *xdr, struct xdr_buf *buf, __be32 *p); |
204 | extern __be32 *xdr_inline_peek(struct xdr_stream *xdr, size_t nbytes); | ||
203 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); | 205 | extern __be32 *xdr_inline_decode(struct xdr_stream *xdr, size_t nbytes); |
204 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); | 206 | extern void xdr_read_pages(struct xdr_stream *xdr, unsigned int len); |
205 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); | 207 | extern void xdr_enter_page(struct xdr_stream *xdr, unsigned int len); |