Blame view
fs/nfs/internal.h
7.52 KB
f7b422b17 NFS: Split fs/nfs... |
1 2 3 4 5 |
/* * NFS internal definitions */ #include <linux/mount.h> |
f9c3a3802 NFS: use new LSM ... |
6 |
#include <linux/security.h> |
f7b422b17 NFS: Split fs/nfs... |
7 |
|
54ceac451 NFS: Share NFS su... |
8 |
struct nfs_string; |
54ceac451 NFS: Share NFS su... |
9 10 11 12 13 14 15 16 |
/* Maximum number of readahead requests * FIXME: this should really be a sysctl so that users may tune it to suit * their needs. People that do NFS over a slow network, might for * instance want to reduce it to something closer to 1 for improved * interactive response. */ #define NFS_MAX_READAHEAD (RPC_DEF_SLOT_TABLE - 1) |
f7b422b17 NFS: Split fs/nfs... |
17 18 19 20 21 22 23 |
struct nfs_clone_mount { const struct super_block *sb; const struct dentry *dentry; struct nfs_fh *fh; struct nfs_fattr *fattr; char *hostname; char *mnt_path; |
6677d0951 NFS: Adjust nfs_c... |
24 25 |
struct sockaddr *addr; size_t addrlen; |
f7b422b17 NFS: Split fs/nfs... |
26 27 |
rpc_authflavor_t authflavor; }; |
6b18eaa08 NFS: move nfs_par... |
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
/* * In-kernel mount arguments */ struct nfs_parsed_mount_data { int flags; int rsize, wsize; int timeo, retrans; int acregmin, acregmax, acdirmin, acdirmax; int namlen; unsigned int bsize; unsigned int auth_flavor_len; rpc_authflavor_t auth_flavors[1]; char *client_address; struct { |
4c5680177 NFS: Support non-... |
44 45 |
struct sockaddr_storage address; size_t addrlen; |
6b18eaa08 NFS: move nfs_par... |
46 |
char *hostname; |
78fa701f3 NFS: Fix up data ... |
47 |
u32 version; |
6b18eaa08 NFS: move nfs_par... |
48 |
unsigned short port; |
78fa701f3 NFS: Fix up data ... |
49 |
unsigned short protocol; |
6b18eaa08 NFS: move nfs_par... |
50 51 52 |
} mount_server; struct { |
4c5680177 NFS: Support non-... |
53 54 |
struct sockaddr_storage address; size_t addrlen; |
6b18eaa08 NFS: move nfs_par... |
55 56 |
char *hostname; char *export_path; |
f22d6d79f NFS: Save the val... |
57 |
unsigned short port; |
78fa701f3 NFS: Fix up data ... |
58 |
unsigned short protocol; |
6b18eaa08 NFS: move nfs_par... |
59 |
} nfs_server; |
f9c3a3802 NFS: use new LSM ... |
60 61 |
struct security_mnt_opts lsm_opts; |
6b18eaa08 NFS: move nfs_par... |
62 |
}; |
24c8dbbb5 NFS: Generalise t... |
63 |
/* client.c */ |
54ceac451 NFS: Share NFS su... |
64 |
extern struct rpc_program nfs_program; |
24c8dbbb5 NFS: Generalise t... |
65 |
extern void nfs_put_client(struct nfs_client *); |
ff052645c NFS: Change nfs_f... |
66 |
extern struct nfs_client *nfs_find_client(const struct sockaddr *, u32); |
3fbd67ad6 NFSv4: Iterate th... |
67 |
extern struct nfs_client *nfs_find_client_next(struct nfs_client *); |
2283f8d6e NFS: use in-kerne... |
68 69 70 |
extern struct nfs_server *nfs_create_server( const struct nfs_parsed_mount_data *, struct nfs_fh *); |
91ea40b9c NFS: use in-kerne... |
71 72 73 |
extern struct nfs_server *nfs4_create_server( const struct nfs_parsed_mount_data *, struct nfs_fh *); |
54ceac451 NFS: Share NFS su... |
74 75 76 77 78 79 |
extern struct nfs_server *nfs4_create_referral_server(struct nfs_clone_mount *, struct nfs_fh *); extern void nfs_free_server(struct nfs_server *server); extern struct nfs_server *nfs_clone_server(struct nfs_server *, struct nfs_fh *, struct nfs_fattr *); |
6aaca5665 NFS: Add server a... |
80 81 82 83 84 85 86 87 88 89 90 91 |
#ifdef CONFIG_PROC_FS extern int __init nfs_fs_proc_init(void); extern void nfs_fs_proc_exit(void); #else static inline int nfs_fs_proc_init(void) { return 0; } static inline void nfs_fs_proc_exit(void) { } #endif |
24c8dbbb5 NFS: Generalise t... |
92 |
|
7d4e2747a NFS: Fix up split... |
93 |
/* nfs4namespace.c */ |
f7b422b17 NFS: Split fs/nfs... |
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
#ifdef CONFIG_NFS_V4 extern struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentry *dentry); #else static inline struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentry *dentry) { return ERR_PTR(-ENOENT); } #endif /* callback_xdr.c */ extern struct svc_version nfs4_callback_version1; /* pagelist.c */ extern int __init nfs_init_nfspagecache(void); |
266bee886 [PATCH] fix stati... |
109 |
extern void nfs_destroy_nfspagecache(void); |
f7b422b17 NFS: Split fs/nfs... |
110 |
extern int __init nfs_init_readpagecache(void); |
266bee886 [PATCH] fix stati... |
111 |
extern void nfs_destroy_readpagecache(void); |
f7b422b17 NFS: Split fs/nfs... |
112 |
extern int __init nfs_init_writepagecache(void); |
266bee886 [PATCH] fix stati... |
113 |
extern void nfs_destroy_writepagecache(void); |
f7b422b17 NFS: Split fs/nfs... |
114 |
|
f7b422b17 NFS: Split fs/nfs... |
115 |
extern int __init nfs_init_directcache(void); |
266bee886 [PATCH] fix stati... |
116 |
extern void nfs_destroy_directcache(void); |
f7b422b17 NFS: Split fs/nfs... |
117 118 |
/* nfs2xdr.c */ |
7d4e2747a NFS: Fix up split... |
119 |
extern int nfs_stat_to_errno(int); |
f7b422b17 NFS: Split fs/nfs... |
120 |
extern struct rpc_procinfo nfs_procedures[]; |
0dbb4c679 [PATCH] xdr annot... |
121 |
extern __be32 * nfs_decode_dirent(__be32 *, struct nfs_entry *, int); |
f7b422b17 NFS: Split fs/nfs... |
122 123 124 |
/* nfs3xdr.c */ extern struct rpc_procinfo nfs3_procedures[]; |
0dbb4c679 [PATCH] xdr annot... |
125 |
extern __be32 *nfs3_decode_dirent(__be32 *, struct nfs_entry *, int); |
f7b422b17 NFS: Split fs/nfs... |
126 127 |
/* nfs4xdr.c */ |
7d4e2747a NFS: Fix up split... |
128 |
#ifdef CONFIG_NFS_V4 |
0dbb4c679 [PATCH] xdr annot... |
129 |
extern __be32 *nfs4_decode_dirent(__be32 *p, struct nfs_entry *entry, int plus); |
7d4e2747a NFS: Fix up split... |
130 |
#endif |
f7b422b17 NFS: Split fs/nfs... |
131 132 |
/* nfs4proc.c */ |
d75d54147 git-nfs-build-fixes |
133 |
#ifdef CONFIG_NFS_V4 |
f7b422b17 NFS: Split fs/nfs... |
134 |
extern struct rpc_procinfo nfs4_procedures[]; |
d75d54147 git-nfs-build-fixes |
135 |
#endif |
f7b422b17 NFS: Split fs/nfs... |
136 |
|
979df72e6 NFS: Add an ACCES... |
137 138 |
/* dir.c */ extern int nfs_access_cache_shrinker(int nr_to_scan, gfp_t gfp_mask); |
f7b422b17 NFS: Split fs/nfs... |
139 |
/* inode.c */ |
5746006f1 NFS: Add an nfsio... |
140 |
extern struct workqueue_struct *nfsiod_workqueue; |
f7b422b17 NFS: Split fs/nfs... |
141 142 143 144 145 146 147 |
extern struct inode *nfs_alloc_inode(struct super_block *sb); extern void nfs_destroy_inode(struct inode *); extern int nfs_write_inode(struct inode *,int); extern void nfs_clear_inode(struct inode *); #ifdef CONFIG_NFS_V4 extern void nfs4_clear_inode(struct inode *); #endif |
f41f74183 NFS: Ensure we za... |
148 |
void nfs_zap_acl_cache(struct inode *inode); |
f7b422b17 NFS: Split fs/nfs... |
149 150 |
/* super.c */ |
ea31a4437 nfs: Fix misparsi... |
151 |
void nfs_parse_ip_address(char *, size_t, struct sockaddr *, size_t *); |
54ceac451 NFS: Share NFS su... |
152 |
extern struct file_system_type nfs_xdev_fs_type; |
f7b422b17 NFS: Split fs/nfs... |
153 |
#ifdef CONFIG_NFS_V4 |
54ceac451 NFS: Share NFS su... |
154 155 |
extern struct file_system_type nfs4_xdev_fs_type; extern struct file_system_type nfs4_referral_fs_type; |
f7b422b17 NFS: Split fs/nfs... |
156 |
#endif |
4ebd9ab38 [PATCH] nfs: non-... |
157 |
|
f7b422b17 NFS: Split fs/nfs... |
158 |
extern struct rpc_stat nfs_rpcstat; |
4ebd9ab38 [PATCH] nfs: non-... |
159 |
|
f7b422b17 NFS: Split fs/nfs... |
160 161 |
extern int __init register_nfs_fs(void); extern void __exit unregister_nfs_fs(void); |
1daef0a86 NFS: Clean up nfs... |
162 163 |
extern void nfs_sb_active(struct super_block *sb); extern void nfs_sb_deactive(struct super_block *sb); |
f7b422b17 NFS: Split fs/nfs... |
164 165 |
/* namespace.c */ |
54ceac451 NFS: Share NFS su... |
166 167 168 |
extern char *nfs_path(const char *base, const struct dentry *droot, const struct dentry *dentry, |
f7b422b17 NFS: Split fs/nfs... |
169 |
char *buffer, ssize_t buflen); |
54ceac451 NFS: Share NFS su... |
170 171 |
/* getroot.c */ extern struct dentry *nfs_get_root(struct super_block *, struct nfs_fh *); |
7d4e2747a NFS: Fix up split... |
172 |
#ifdef CONFIG_NFS_V4 |
54ceac451 NFS: Share NFS su... |
173 174 175 176 177 |
extern struct dentry *nfs4_get_root(struct super_block *, struct nfs_fh *); extern int nfs4_path_walk(struct nfs_server *server, struct nfs_fh *mntfh, const char *path); |
7d4e2747a NFS: Fix up split... |
178 |
#endif |
f7b422b17 NFS: Split fs/nfs... |
179 180 181 182 183 |
/* * Determine the device name as a string */ static inline char *nfs_devname(const struct vfsmount *mnt_parent, |
54ceac451 NFS: Share NFS su... |
184 185 |
const struct dentry *dentry, char *buffer, ssize_t buflen) |
f7b422b17 NFS: Split fs/nfs... |
186 |
{ |
54ceac451 NFS: Share NFS su... |
187 188 |
return nfs_path(mnt_parent->mnt_devname, mnt_parent->mnt_root, dentry, buffer, buflen); |
f7b422b17 NFS: Split fs/nfs... |
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
} /* * Determine the actual block size (and log2 thereof) */ static inline unsigned long nfs_block_bits(unsigned long bsize, unsigned char *nrbitsp) { /* make sure blocksize is a power of two */ if ((bsize & (bsize - 1)) || nrbitsp) { unsigned char nrbits; for (nrbits = 31; nrbits && !(bsize & (1 << nrbits)); nrbits--) ; bsize = 1 << nrbits; if (nrbitsp) *nrbitsp = nrbits; } return bsize; } /* * Calculate the number of 512byte blocks used. */ |
9eaa67c6a NFS: Clean-up: us... |
214 |
static inline blkcnt_t nfs_calc_block_size(u64 tsize) |
f7b422b17 NFS: Split fs/nfs... |
215 |
{ |
9eaa67c6a NFS: Clean-up: us... |
216 |
blkcnt_t used = (tsize + 511) >> 9; |
f7b422b17 NFS: Split fs/nfs... |
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
return (used > ULONG_MAX) ? ULONG_MAX : used; } /* * Compute and set NFS server blocksize */ static inline unsigned long nfs_block_size(unsigned long bsize, unsigned char *nrbitsp) { if (bsize < NFS_MIN_FILE_IO_SIZE) bsize = NFS_DEF_FILE_IO_SIZE; else if (bsize >= NFS_MAX_FILE_IO_SIZE) bsize = NFS_MAX_FILE_IO_SIZE; return nfs_block_bits(bsize, nrbitsp); } /* * Determine the maximum file size for a superblock */ static inline void nfs_super_set_maxbytes(struct super_block *sb, __u64 maxfilesize) { sb->s_maxbytes = (loff_t)maxfilesize; if (sb->s_maxbytes > MAX_LFS_FILESIZE || sb->s_maxbytes <= 0) sb->s_maxbytes = MAX_LFS_FILESIZE; } |
49a70f278 NFS: Cleanup: add... |
244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
/* * Determine the number of bytes of data the page contains */ static inline unsigned int nfs_page_length(struct page *page) { loff_t i_size = i_size_read(page->mapping->host); if (i_size > 0) { pgoff_t end_index = (i_size - 1) >> PAGE_CACHE_SHIFT; if (page->index < end_index) return PAGE_CACHE_SIZE; if (page->index == end_index) return ((i_size - 1) & ~PAGE_CACHE_MASK) + 1; } return 0; } |
8d5658c94 NFS: Fix a buffer... |
262 263 264 265 266 267 268 269 270 271 272 |
/* * Determine the number of pages in an array of length 'len' and * with a base offset of 'base' */ static inline unsigned int nfs_page_array_len(unsigned int base, size_t len) { return ((unsigned long)len + (unsigned long)base + PAGE_SIZE - 1) >> PAGE_SHIFT; } |
ea31a4437 nfs: Fix misparsi... |
273 |
#define IPV6_SCOPE_DELIMITER '%' |
f0c929251 nfs: prepare to s... |
274 275 276 277 278 279 280 |
/* * Set the port number in an address. Be agnostic about the address * family. */ static inline void nfs_set_port(struct sockaddr *sap, unsigned short port) { |
456018d79 NFS: Cleanup nfs_... |
281 282 |
struct sockaddr_in *ap = (struct sockaddr_in *)sap; struct sockaddr_in6 *ap6 = (struct sockaddr_in6 *)sap; |
f0c929251 nfs: prepare to s... |
283 |
switch (sap->sa_family) { |
456018d79 NFS: Cleanup nfs_... |
284 285 286 287 288 289 |
case AF_INET: ap->sin_port = htons(port); break; case AF_INET6: ap6->sin6_port = htons(port); break; |
f0c929251 nfs: prepare to s... |
290 291 |
} } |