Blame view
include/linux/nfs_fs.h
17.9 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 |
/* * linux/include/linux/nfs_fs.h * * Copyright (C) 1992 Rick Sladkey * * OS-specific nfs filesystem definitions and declarations */ #ifndef _LINUX_NFS_FS_H #define _LINUX_NFS_FS_H |
e18fa700c Move several *_SU... |
11 |
#include <linux/magic.h> |
03bf4b707 [PATCH] RPC: para... |
12 |
/* Default timeout values */ |
259875efe NFS: set transpor... |
13 14 15 16 |
#define NFS_DEF_UDP_TIMEO (11) #define NFS_DEF_UDP_RETRANS (3) #define NFS_DEF_TCP_TIMEO (600) #define NFS_DEF_TCP_RETRANS (2) |
03bf4b707 [PATCH] RPC: para... |
17 18 |
#define NFS_MAX_UDP_TIMEOUT (60*HZ) #define NFS_MAX_TCP_TIMEOUT (600*HZ) |
0e0cab744 NFS: use document... |
19 20 21 22 |
#define NFS_DEF_ACREGMIN (3) #define NFS_DEF_ACREGMAX (60) #define NFS_DEF_ACDIRMIN (30) #define NFS_DEF_ACDIRMAX (60) |
1da177e4c Linux-2.6.12-rc2 |
23 |
/* |
1da177e4c Linux-2.6.12-rc2 |
24 25 26 |
* When flushing a cluster of dirty pages, there can be different * strategies: */ |
1da177e4c Linux-2.6.12-rc2 |
27 |
#define FLUSH_SYNC 1 /* file being synced, or contention */ |
1da177e4c Linux-2.6.12-rc2 |
28 29 30 |
#define FLUSH_STABLE 4 /* commit to stable storage */ #define FLUSH_LOWPRI 8 /* low priority background flush */ #define FLUSH_HIGHPRI 16 /* high priority memory reclaim flush */ |
b31268ac7 FS: Use stable wr... |
31 32 |
#define FLUSH_COND_STABLE 32 /* conditional stable write - only stable * if everything fits in one RPC */ |
1da177e4c Linux-2.6.12-rc2 |
33 34 |
#ifdef __KERNEL__ |
7f1cbe51f [PATCH] headers_c... |
35 36 37 |
#include <linux/in.h> #include <linux/mm.h> #include <linux/pagemap.h> |
1c3c07e9f NFS: Add a new AC... |
38 |
#include <linux/rbtree.h> |
7f1cbe51f [PATCH] headers_c... |
39 40 41 42 43 44 45 46 47 48 49 50 |
#include <linux/rwsem.h> #include <linux/wait.h> #include <linux/sunrpc/debug.h> #include <linux/sunrpc/auth.h> #include <linux/sunrpc/clnt.h> #include <linux/nfs.h> #include <linux/nfs2.h> #include <linux/nfs3.h> #include <linux/nfs4.h> #include <linux/nfs_xdr.h> |
7f1cbe51f [PATCH] headers_c... |
51 |
#include <linux/nfs_fs_sb.h> |
7f1cbe51f [PATCH] headers_c... |
52 53 54 55 56 57 |
#include <linux/mempool.h> /* * These are the default flags for swap requests */ #define NFS_RPC_SWAPFLAGS (RPC_TASK_SWAPPER|RPC_TASK_ROOTCREDS) |
1da177e4c Linux-2.6.12-rc2 |
58 59 60 61 |
/* * NFSv3/v4 Access mode cache entry */ struct nfs_access_entry { |
1c3c07e9f NFS: Add a new AC... |
62 |
struct rb_node rb_node; |
cfcea3e8c NFS: Add a global... |
63 |
struct list_head lru; |
1da177e4c Linux-2.6.12-rc2 |
64 65 66 67 |
unsigned long jiffies; struct rpc_cred * cred; int mask; }; |
f11ac8db5 NFSv4: Ensure tha... |
68 69 70 71 72 73 74 |
struct nfs_lock_context { atomic_t count; struct list_head list; struct nfs_open_context *open_context; fl_owner_t lockowner; pid_t pid; }; |
1da177e4c Linux-2.6.12-rc2 |
75 76 |
struct nfs4_state; struct nfs_open_context { |
f11ac8db5 NFSv4: Ensure tha... |
77 |
struct nfs_lock_context lock_context; |
3d4ff43d8 nfs_open_context ... |
78 |
struct dentry *dentry; |
1da177e4c Linux-2.6.12-rc2 |
79 80 |
struct rpc_cred *cred; struct nfs4_state *state; |
dc0b027df NFSv4: Convert th... |
81 |
fmode_t mode; |
7b159fc18 NFS: Fall back to... |
82 83 84 |
unsigned long flags; #define NFS_CONTEXT_ERROR_WRITE (0) |
1da177e4c Linux-2.6.12-rc2 |
85 86 87 |
int error; struct list_head list; |
480c2006e NFS: Create nfs_o... |
88 |
}; |
00a926422 [PATCH] NFS: Hide... |
89 |
|
480c2006e NFS: Create nfs_o... |
90 91 |
struct nfs_open_dir_context { struct rpc_cred *cred; |
0c0308066 NFS: Fix spurious... |
92 |
unsigned long attr_gencount; |
00a926422 [PATCH] NFS: Hide... |
93 |
__u64 dir_cookie; |
8ef2ce3e1 NFS: Detect loops... |
94 |
__u64 dup_cookie; |
0c0308066 NFS: Fix spurious... |
95 |
signed char duped; |
1da177e4c Linux-2.6.12-rc2 |
96 97 98 99 100 101 |
}; /* * NFSv4 delegation */ struct nfs_delegation; |
5c6a9f7d9 [PATCH] NFS: Cach... |
102 |
struct posix_acl; |
1da177e4c Linux-2.6.12-rc2 |
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
/* * nfs fs inode data in memory */ struct nfs_inode { /* * The 64bit 'inode number' */ __u64 fileid; /* * NFS file handle */ struct nfs_fh fh; /* * Various flags */ |
412d582ec [PATCH] NFS: use ... |
120 121 |
unsigned long flags; /* atomic bit ops */ unsigned long cache_validity; /* bit mask */ |
1da177e4c Linux-2.6.12-rc2 |
122 123 |
/* |
24bd68f46 NFS: Code comment... |
124 |
* read_cache_jiffies is when we started read-caching this inode. |
1da177e4c Linux-2.6.12-rc2 |
125 126 127 128 129 130 131 |
* attrtimeo is for how long the cached information is assumed * to be valid. A successful attribute revalidation doubles * attrtimeo (up to acregmax/acdirmax), a failure resets it to * acregmin/acdirmin. * * We need to revalidate the cached attrs for this inode if * |
64672d55d optimize attribut... |
132 133 134 135 |
* jiffies - read_cache_jiffies >= attrtimeo * * Please note the comparison is greater than or equal * so that zero timeout values can be specified. |
1da177e4c Linux-2.6.12-rc2 |
136 |
*/ |
1da177e4c Linux-2.6.12-rc2 |
137 138 139 |
unsigned long read_cache_jiffies; unsigned long attrtimeo; unsigned long attrtimeo_timestamp; |
1da177e4c Linux-2.6.12-rc2 |
140 |
|
4704f0e27 NFS: Fix the reso... |
141 |
unsigned long attr_gencount; |
1da177e4c Linux-2.6.12-rc2 |
142 143 144 145 146 |
/* "Generation counter" for the attribute cache. This is * bumped whenever we update the metadata on the * server. */ unsigned long cache_change_attribute; |
1da177e4c Linux-2.6.12-rc2 |
147 |
|
1c3c07e9f NFS: Add a new AC... |
148 |
struct rb_root access_cache; |
cfcea3e8c NFS: Add a global... |
149 150 |
struct list_head access_cache_entry_lru; struct list_head access_cache_inode_lru; |
5c6a9f7d9 [PATCH] NFS: Cach... |
151 152 153 154 |
#ifdef CONFIG_NFS_V3_ACL struct posix_acl *acl_access; struct posix_acl *acl_default; #endif |
1da177e4c Linux-2.6.12-rc2 |
155 156 157 158 159 |
/* * This is the cookie verifier used for NFSv3 readdir * operations */ |
bc4785cd4 [PATCH] nfs: veri... |
160 |
__be32 cookieverf[2]; |
1da177e4c Linux-2.6.12-rc2 |
161 162 163 164 |
/* * This is the list of dirty unwritten pages. */ |
1da177e4c Linux-2.6.12-rc2 |
165 |
struct radix_tree_root nfs_page_tree; |
fb8a1f11b NFS: cleanup - re... |
166 |
unsigned long npages; |
ff778d02b NFS: Add a count ... |
167 |
unsigned long ncommit; |
1da177e4c Linux-2.6.12-rc2 |
168 169 170 |
/* Open contexts for shared mmap writes */ struct list_head open_files; |
565277f63 NFS: Fix a race i... |
171 172 173 174 175 |
/* Number of in-flight sillydelete RPC calls */ atomic_t silly_count; /* List of deferred sillydelete requests */ struct hlist_head silly_list; wait_queue_head_t waitqueue; |
1da177e4c Linux-2.6.12-rc2 |
176 |
#ifdef CONFIG_NFS_V4 |
e50a1c2e1 [PATCH] NFSv4: cl... |
177 |
struct nfs4_cached_acl *nfs4_acl; |
1da177e4c Linux-2.6.12-rc2 |
178 179 |
/* NFSv4 state */ struct list_head open_states; |
5b22216e1 nfs: __rcu annota... |
180 |
struct nfs_delegation __rcu *delegation; |
bd7bf9d54 NFSv4: Convert de... |
181 |
fmode_t delegation_state; |
1da177e4c Linux-2.6.12-rc2 |
182 |
struct rw_semaphore rwsem; |
e5e940170 NFS: create and d... |
183 184 185 |
/* pNFS layout information */ struct pnfs_layout_hdr *layout; |
e0c2b3801 NFSv4.1: filelayo... |
186 |
atomic_t commits_outstanding; |
1da177e4c Linux-2.6.12-rc2 |
187 |
#endif /* CONFIG_NFS_V4*/ |
ef79c097b NFS: Use local di... |
188 189 190 |
#ifdef CONFIG_NFS_FSCACHE struct fscache_cookie *fscache; #endif |
1da177e4c Linux-2.6.12-rc2 |
191 192 193 194 |
struct inode vfs_inode; }; /* |
552968098 [PATCH] NFS: spli... |
195 |
* Cache validity bit flags |
1da177e4c Linux-2.6.12-rc2 |
196 |
*/ |
552968098 [PATCH] NFS: spli... |
197 198 199 200 201 202 |
#define NFS_INO_INVALID_ATTR 0x0001 /* cached attrs are invalid */ #define NFS_INO_INVALID_DATA 0x0002 /* cached data is invalid */ #define NFS_INO_INVALID_ATIME 0x0004 /* cached atime is invalid */ #define NFS_INO_INVALID_ACCESS 0x0008 /* cached access cred invalid */ #define NFS_INO_INVALID_ACL 0x0010 /* cached acls are invalid */ #define NFS_INO_REVAL_PAGECACHE 0x0020 /* must revalidate pagecache */ |
412c77cee NFSv4: Defer inod... |
203 |
#define NFS_INO_REVAL_FORCED 0x0040 /* force revalidation ignoring a delegation */ |
552968098 [PATCH] NFS: spli... |
204 205 |
/* |
412d582ec [PATCH] NFS: use ... |
206 |
* Bit offsets in flags field |
552968098 [PATCH] NFS: spli... |
207 |
*/ |
691beb13c NFS: Allow concur... |
208 209 210 |
#define NFS_INO_ADVISE_RDPLUS (0) /* advise readdirplus */ #define NFS_INO_STALE (1) /* possible stale inode */ #define NFS_INO_ACL_LRU_SET (2) /* Inode is on the LRU list */ |
72cb77f4a NFS: Throttle pag... |
211 |
#define NFS_INO_FLUSHING (4) /* inode is flushing out data */ |
ef79c097b NFS: Use local di... |
212 213 |
#define NFS_INO_FSCACHE (5) /* inode can be cached by FS-Cache */ #define NFS_INO_FSCACHE_LOCK (6) /* FS-Cache cookie management lock */ |
71d0a6112 NFS: Fix an unsta... |
214 |
#define NFS_INO_COMMIT (7) /* inode is committing unstable writes */ |
a861a1e1c NFSv4.1: add gene... |
215 |
#define NFS_INO_PNFS_COMMIT (8) /* use pnfs code for commit */ |
863a3c6c6 NFSv4.1: layoutco... |
216 |
#define NFS_INO_LAYOUTCOMMIT (9) /* layoutcommit required */ |
92407e75c nfs4: serialize l... |
217 |
#define NFS_INO_LAYOUTCOMMITTING (10) /* layoutcommit inflight */ |
1da177e4c Linux-2.6.12-rc2 |
218 |
|
99fadcd76 nfs: convert NFS_... |
219 |
static inline struct nfs_inode *NFS_I(const struct inode *inode) |
1da177e4c Linux-2.6.12-rc2 |
220 221 222 |
{ return container_of(inode, struct nfs_inode, vfs_inode); } |
99fadcd76 nfs: convert NFS_... |
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 |
static inline struct nfs_server *NFS_SB(const struct super_block *s) { return (struct nfs_server *)(s->s_fs_info); } static inline struct nfs_fh *NFS_FH(const struct inode *inode) { return &NFS_I(inode)->fh; } static inline struct nfs_server *NFS_SERVER(const struct inode *inode) { return NFS_SB(inode->i_sb); } static inline struct rpc_clnt *NFS_CLIENT(const struct inode *inode) { return NFS_SERVER(inode)->client; } static inline const struct nfs_rpc_ops *NFS_PROTO(const struct inode *inode) { return NFS_SERVER(inode)->nfs_client->rpc_ops; } static inline __be32 *NFS_COOKIEVERF(const struct inode *inode) { return NFS_I(inode)->cookieverf; } static inline unsigned NFS_MINATTRTIMEO(const struct inode *inode) { struct nfs_server *nfss = NFS_SERVER(inode); return S_ISDIR(inode->i_mode) ? nfss->acdirmin : nfss->acregmin; } static inline unsigned NFS_MAXATTRTIMEO(const struct inode *inode) { struct nfs_server *nfss = NFS_SERVER(inode); return S_ISDIR(inode->i_mode) ? nfss->acdirmax : nfss->acregmax; } static inline int NFS_STALE(const struct inode *inode) { return test_bit(NFS_INO_STALE, &NFS_I(inode)->flags); } |
ef79c097b NFS: Use local di... |
270 271 272 273 |
static inline int NFS_FSCACHE(const struct inode *inode) { return test_bit(NFS_INO_FSCACHE, &NFS_I(inode)->flags); } |
99fadcd76 nfs: convert NFS_... |
274 275 276 277 278 279 280 281 282 |
static inline __u64 NFS_FILEID(const struct inode *inode) { return NFS_I(inode)->fileid; } static inline void set_nfs_fileid(struct inode *inode, __u64 fileid) { NFS_I(inode)->fileid = fileid; } |
1da177e4c Linux-2.6.12-rc2 |
283 |
|
decf491f3 NFS: Don't let nf... |
284 285 |
static inline void nfs_mark_for_revalidate(struct inode *inode) { |
38478b24e NFS: More page ca... |
286 |
struct nfs_inode *nfsi = NFS_I(inode); |
decf491f3 NFS: Don't let nf... |
287 |
spin_lock(&inode->i_lock); |
38478b24e NFS: More page ca... |
288 |
nfsi->cache_validity |= NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ACCESS; |
f38211100 NFS: nfs_mark_for... |
289 |
if (S_ISDIR(inode->i_mode)) |
38478b24e NFS: More page ca... |
290 |
nfsi->cache_validity |= NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_DATA; |
decf491f3 NFS: Don't let nf... |
291 292 |
spin_unlock(&inode->i_lock); } |
1da177e4c Linux-2.6.12-rc2 |
293 294 295 296 297 298 299 |
static inline int nfs_server_capable(struct inode *inode, int cap) { return NFS_SERVER(inode)->caps & cap; } static inline int NFS_USE_READDIRPLUS(struct inode *inode) { |
3a10c30ac nfs: obliterate N... |
300 |
return test_bit(NFS_INO_ADVISE_RDPLUS, &NFS_I(inode)->flags); |
1da177e4c Linux-2.6.12-rc2 |
301 |
} |
d75340cc4 NFSv4: Fix nfs_at... |
302 303 304 305 |
static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf) { dentry->d_time = verf; } |
1da177e4c Linux-2.6.12-rc2 |
306 307 |
/** * nfs_save_change_attribute - Returns the inode attribute change cookie |
8edb01828 NFS: Fix the sign... |
308 |
* @dir - pointer to parent directory inode |
1da177e4c Linux-2.6.12-rc2 |
309 310 311 |
* The "change attribute" is updated every time we finish an operation * that will result in a metadata change on the server. */ |
8edb01828 NFS: Fix the sign... |
312 |
static inline unsigned long nfs_save_change_attribute(struct inode *dir) |
1da177e4c Linux-2.6.12-rc2 |
313 |
{ |
8edb01828 NFS: Fix the sign... |
314 |
return NFS_I(dir)->cache_change_attribute; |
1da177e4c Linux-2.6.12-rc2 |
315 316 317 |
} /** |
4b841736b NFS: Fix nfs_veri... |
318 319 |
* nfs_verify_change_attribute - Detects NFS remote directory changes * @dir - pointer to parent directory inode |
1da177e4c Linux-2.6.12-rc2 |
320 |
* @chattr - previously saved change attribute |
4b841736b NFS: Fix nfs_veri... |
321 322 323 |
* Return "false" if the verifiers doesn't match the change attribute. * This would usually indicate that the directory contents have changed on * the server, and that any dentries need revalidating. |
1da177e4c Linux-2.6.12-rc2 |
324 |
*/ |
4b841736b NFS: Fix nfs_veri... |
325 |
static inline int nfs_verify_change_attribute(struct inode *dir, unsigned long chattr) |
1da177e4c Linux-2.6.12-rc2 |
326 |
{ |
4b841736b NFS: Fix nfs_veri... |
327 |
return chattr == NFS_I(dir)->cache_change_attribute; |
1da177e4c Linux-2.6.12-rc2 |
328 329 330 331 332 |
} /* * linux/fs/nfs/inode.c */ |
29884df0d NFS: Fix another ... |
333 |
extern int nfs_sync_mapping(struct address_space *mapping); |
cd9ae2b6a [PATCH] NFS: Deal... |
334 |
extern void nfs_zap_mapping(struct inode *inode, struct address_space *mapping); |
1da177e4c Linux-2.6.12-rc2 |
335 |
extern void nfs_zap_caches(struct inode *); |
c48129983 NFS: Fix atime re... |
336 |
extern void nfs_invalidate_atime(struct inode *); |
1da177e4c Linux-2.6.12-rc2 |
337 338 339 |
extern struct inode *nfs_fhget(struct super_block *, struct nfs_fh *, struct nfs_fattr *); extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *); |
decf491f3 NFS: Don't let nf... |
340 |
extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr); |
70ca88521 NFS: Fake up 'wcc... |
341 |
extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr); |
1da177e4c Linux-2.6.12-rc2 |
342 |
extern int nfs_getattr(struct vfsmount *, struct dentry *, struct kstat *); |
10556cb21 ->permission() sa... |
343 |
extern int nfs_permission(struct inode *, int); |
1da177e4c Linux-2.6.12-rc2 |
344 345 346 347 348 |
extern int nfs_open(struct inode *, struct file *); extern int nfs_release(struct inode *, struct file *); extern int nfs_attribute_timeout(struct inode *inode); extern int nfs_revalidate_inode(struct nfs_server *server, struct inode *inode); extern int __nfs_revalidate_inode(struct nfs_server *, struct inode *); |
44b11874f NFS: Separate met... |
349 |
extern int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping); |
1da177e4c Linux-2.6.12-rc2 |
350 |
extern int nfs_setattr(struct dentry *, struct iattr *); |
65e4308d2 [PATCH] NFS: Ensu... |
351 |
extern void nfs_setattr_update_inode(struct inode *inode, struct iattr *attr); |
1da177e4c Linux-2.6.12-rc2 |
352 353 |
extern struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx); extern void put_nfs_open_context(struct nfs_open_context *ctx); |
dc0b027df NFSv4: Convert th... |
354 |
extern struct nfs_open_context *nfs_find_open_context(struct inode *inode, struct rpc_cred *cred, fmode_t mode); |
5ede7b1cf pull manipulation... |
355 |
extern struct nfs_open_context *alloc_nfs_open_context(struct dentry *dentry, fmode_t f_mode); |
cd9a1c0e5 NFSv4: Clean up n... |
356 |
extern void nfs_file_set_open_context(struct file *filp, struct nfs_open_context *ctx); |
f11ac8db5 NFSv4: Ensure tha... |
357 358 |
extern struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx); extern void nfs_put_lock_context(struct nfs_lock_context *l_ctx); |
f43bf0beb NFS: Add a boot p... |
359 |
extern u64 nfs_compat_user_ino64(u64 fileid); |
4704f0e27 NFS: Fix the reso... |
360 |
extern void nfs_fattr_init(struct nfs_fattr *fattr); |
56463e50d NFS: Use super.c ... |
361 |
extern unsigned long nfs_inc_attr_generation_counter(void); |
1da177e4c Linux-2.6.12-rc2 |
362 |
|
2d36bfde8 NFS: Add helper f... |
363 364 365 366 367 368 369 370 371 372 373 374 375 |
extern struct nfs_fattr *nfs_alloc_fattr(void); static inline void nfs_free_fattr(const struct nfs_fattr *fattr) { kfree(fattr); } extern struct nfs_fh *nfs_alloc_fhandle(void); static inline void nfs_free_fhandle(const struct nfs_fh *fh) { kfree(fh); } |
56463e50d NFS: Use super.c ... |
376 377 378 379 |
/* * linux/fs/nfs/nfsroot.c */ extern int nfs_root_data(char **root_device, char **root_data); /*__init*/ |
1da177e4c Linux-2.6.12-rc2 |
380 |
/* linux/net/ipv4/ipconfig.c: trims ip addr off front of name, too. */ |
5a874db4d [NET]: ipconfig a... |
381 |
extern __be32 root_nfs_parse_addr(char *name); /*__init*/ |
0e574af1b NFS: Cleanup init... |
382 |
|
1da177e4c Linux-2.6.12-rc2 |
383 384 385 |
/* * linux/fs/nfs/file.c */ |
c5ef1c42c [PATCH] mark stru... |
386 |
extern const struct inode_operations nfs_file_inode_operations; |
b7fa0554c [PATCH] NFS: Add ... |
387 |
#ifdef CONFIG_NFS_V3 |
c5ef1c42c [PATCH] mark stru... |
388 |
extern const struct inode_operations nfs3_file_inode_operations; |
b7fa0554c [PATCH] NFS: Add ... |
389 |
#endif /* CONFIG_NFS_V3 */ |
4b6f5d20b [PATCH] Make most... |
390 |
extern const struct file_operations nfs_file_operations; |
1788ea6e3 nfs: when attempt... |
391 392 393 |
#ifdef CONFIG_NFS_V4 extern const struct file_operations nfs4_file_operations; #endif /* CONFIG_NFS_V4 */ |
f5e54d6e5 [PATCH] mark addr... |
394 |
extern const struct address_space_operations nfs_file_aops; |
11de3b11e NFS: Fix a memory... |
395 |
extern const struct address_space_operations nfs_dir_aops; |
1da177e4c Linux-2.6.12-rc2 |
396 |
|
c03025d55 NFS: Add a helper... |
397 398 399 400 |
static inline struct nfs_open_context *nfs_file_open_context(struct file *filp) { return filp->private_data; } |
1da177e4c Linux-2.6.12-rc2 |
401 402 |
static inline struct rpc_cred *nfs_file_cred(struct file *file) { |
504e51895 Make nfs_file_cre... |
403 404 405 406 407 408 |
if (file != NULL) { struct nfs_open_context *ctx = nfs_file_open_context(file); if (ctx) return ctx->cred; } |
1da177e4c Linux-2.6.12-rc2 |
409 410 411 412 |
return NULL; } /* |
b7fa0554c [PATCH] NFS: Add ... |
413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 |
* linux/fs/nfs/xattr.c */ #ifdef CONFIG_NFS_V3_ACL extern ssize_t nfs3_listxattr(struct dentry *, char *, size_t); extern ssize_t nfs3_getxattr(struct dentry *, const char *, void *, size_t); extern int nfs3_setxattr(struct dentry *, const char *, const void *, size_t, int); extern int nfs3_removexattr (struct dentry *, const char *name); #else # define nfs3_listxattr NULL # define nfs3_getxattr NULL # define nfs3_setxattr NULL # define nfs3_removexattr NULL #endif /* |
1da177e4c Linux-2.6.12-rc2 |
429 430 431 432 |
* linux/fs/nfs/direct.c */ extern ssize_t nfs_direct_IO(int, struct kiocb *, const struct iovec *, loff_t, unsigned long); |
027445c37 [PATCH] Vectorize... |
433 434 435 436 437 438 |
extern ssize_t nfs_file_direct_read(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos); extern ssize_t nfs_file_direct_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos); |
1da177e4c Linux-2.6.12-rc2 |
439 440 441 442 |
/* * linux/fs/nfs/dir.c */ |
c5ef1c42c [PATCH] mark stru... |
443 |
extern const struct inode_operations nfs_dir_inode_operations; |
b7fa0554c [PATCH] NFS: Add ... |
444 |
#ifdef CONFIG_NFS_V3 |
c5ef1c42c [PATCH] mark stru... |
445 |
extern const struct inode_operations nfs3_dir_inode_operations; |
b7fa0554c [PATCH] NFS: Add ... |
446 |
#endif /* CONFIG_NFS_V3 */ |
4b6f5d20b [PATCH] Make most... |
447 |
extern const struct file_operations nfs_dir_operations; |
f786aa90e constify dentry_o... |
448 |
extern const struct dentry_operations nfs_dentry_operations; |
1da177e4c Linux-2.6.12-rc2 |
449 |
|
bfc69a456 NFS: define a fun... |
450 |
extern void nfs_force_lookup_revalidate(struct inode *dir); |
1da177e4c Linux-2.6.12-rc2 |
451 |
extern int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fh, struct nfs_fattr *fattr); |
af22f94ae NFSv4: Simplify _... |
452 453 |
extern int nfs_may_open(struct inode *inode, struct rpc_cred *cred, int openflags); extern void nfs_access_zap_cache(struct inode *inode); |
1da177e4c Linux-2.6.12-rc2 |
454 455 456 457 |
/* * linux/fs/nfs/symlink.c */ |
c5ef1c42c [PATCH] mark stru... |
458 |
extern const struct inode_operations nfs_symlink_inode_operations; |
1da177e4c Linux-2.6.12-rc2 |
459 460 |
/* |
a72b44222 NFSv4: Allow user... |
461 462 463 464 465 466 |
* linux/fs/nfs/sysctl.c */ #ifdef CONFIG_SYSCTL extern int nfs_register_sysctl(void); extern void nfs_unregister_sysctl(void); #else |
7fd105e75 [PATCH] Fix compi... |
467 |
#define nfs_register_sysctl() 0 |
a72b44222 NFSv4: Allow user... |
468 469 470 471 |
#define nfs_unregister_sysctl() do { } while(0) #endif /* |
55a975937 NFS: Ensure the c... |
472 473 |
* linux/fs/nfs/namespace.c */ |
c5ef1c42c [PATCH] mark stru... |
474 475 |
extern const struct inode_operations nfs_mountpoint_inode_operations; extern const struct inode_operations nfs_referral_inode_operations; |
51d8fa6a1 NFS: Add timeout ... |
476 477 |
extern int nfs_mountpoint_expiry_timeout; extern void nfs_release_automount_timer(void); |
55a975937 NFS: Ensure the c... |
478 479 |
/* |
1da177e4c Linux-2.6.12-rc2 |
480 481 |
* linux/fs/nfs/unlink.c */ |
e4eff1a62 SUNRPC: Clean up ... |
482 |
extern void nfs_complete_unlink(struct dentry *dentry, struct inode *); |
565277f63 NFS: Fix a race i... |
483 484 |
extern void nfs_block_sillyrename(struct dentry *dentry); extern void nfs_unblock_sillyrename(struct dentry *dentry); |
779c51795 nfs: move nfs_sil... |
485 |
extern int nfs_sillyrename(struct inode *dir, struct dentry *dentry); |
1da177e4c Linux-2.6.12-rc2 |
486 487 488 489 |
/* * linux/fs/nfs/write.c */ |
89a09141d [PATCH] nfs: fix ... |
490 |
extern int nfs_congestion_kb; |
1da177e4c Linux-2.6.12-rc2 |
491 492 493 494 |
extern int nfs_writepage(struct page *page, struct writeback_control *wbc); extern int nfs_writepages(struct address_space *, struct writeback_control *); extern int nfs_flush_incompatible(struct file *file, struct page *page); extern int nfs_updatepage(struct file *, struct page *, unsigned int, unsigned int); |
136028967 NFS: change nfs_w... |
495 |
extern void nfs_writeback_done(struct rpc_task *, struct nfs_write_data *); |
1da177e4c Linux-2.6.12-rc2 |
496 497 498 499 500 |
/* * Try to write back everything synchronously (but check the * return value!) */ |
1c75950b9 NFS: cleanup of n... |
501 502 |
extern int nfs_wb_all(struct inode *inode); extern int nfs_wb_page(struct inode *inode, struct page* page); |
1b3b4a1a2 NFS: Fix a write ... |
503 |
extern int nfs_wb_page_cancel(struct inode *inode, struct page* page); |
1da177e4c Linux-2.6.12-rc2 |
504 |
#if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) |
b608b283a NFS: kswapd must ... |
505 |
extern int nfs_commit_inode(struct inode *, int); |
c9d8f89d9 NFS: Ensure that ... |
506 |
extern struct nfs_write_data *nfs_commitdata_alloc(void); |
8aca67f0a SUNRPC: Fix a pot... |
507 |
extern void nfs_commit_free(struct nfs_write_data *wdata); |
77a63f3d1 NFS: Fix a typo i... |
508 509 510 511 512 513 |
#else static inline int nfs_commit_inode(struct inode *inode, int how) { return 0; } |
1da177e4c Linux-2.6.12-rc2 |
514 515 516 517 518 519 520 |
#endif static inline int nfs_have_writebacks(struct inode *inode) { return NFS_I(inode)->npages != 0; } |
1da177e4c Linux-2.6.12-rc2 |
521 |
/* |
e4e20512c NFS: make 2 funct... |
522 |
* Allocate nfs_write_data structures |
1da177e4c Linux-2.6.12-rc2 |
523 |
*/ |
8d5658c94 NFS: Fix a buffer... |
524 |
extern struct nfs_write_data *nfs_writedata_alloc(unsigned int npages); |
1ae88b2e4 NFS: Fix an O_DIR... |
525 |
extern void nfs_writedata_free(struct nfs_write_data *); |
1da177e4c Linux-2.6.12-rc2 |
526 |
|
1da177e4c Linux-2.6.12-rc2 |
527 528 529 530 531 532 |
/* * linux/fs/nfs/read.c */ extern int nfs_readpage(struct file *, struct page *); extern int nfs_readpages(struct file *, struct address_space *, struct list_head *, unsigned); |
ec06c096e NFS: Cleanup of N... |
533 |
extern int nfs_readpage_result(struct rpc_task *, struct nfs_read_data *); |
f42b293d6 NFS: nfs_readpage... |
534 535 |
extern int nfs_readpage_async(struct nfs_open_context *, struct inode *, struct page *); |
963d8fe53 RPC: Clean up RPC... |
536 |
|
1da177e4c Linux-2.6.12-rc2 |
537 |
/* |
e4e20512c NFS: make 2 funct... |
538 |
* Allocate nfs_read_data structures |
1da177e4c Linux-2.6.12-rc2 |
539 |
*/ |
8d5658c94 NFS: Fix a buffer... |
540 |
extern struct nfs_read_data *nfs_readdata_alloc(unsigned int npages); |
1ae88b2e4 NFS: Fix an O_DIR... |
541 |
extern void nfs_readdata_free(struct nfs_read_data *); |
1da177e4c Linux-2.6.12-rc2 |
542 |
|
1da177e4c Linux-2.6.12-rc2 |
543 |
/* |
b7fa0554c [PATCH] NFS: Add ... |
544 545 546 547 548 549 |
* linux/fs/nfs3proc.c */ #ifdef CONFIG_NFS_V3_ACL extern struct posix_acl *nfs3_proc_getacl(struct inode *inode, int type); extern int nfs3_proc_setacl(struct inode *inode, int type, struct posix_acl *acl); |
055ffbea0 [PATCH] NFS: Fix ... |
550 |
extern int nfs3_proc_set_default_acl(struct inode *dir, struct inode *inode, |
d3fb61207 switch posix_acl_... |
551 |
umode_t mode); |
5c6a9f7d9 [PATCH] NFS: Cach... |
552 |
extern void nfs3_forget_cached_acls(struct inode *inode); |
055ffbea0 [PATCH] NFS: Fix ... |
553 554 555 |
#else static inline int nfs3_proc_set_default_acl(struct inode *dir, struct inode *inode, |
d3fb61207 switch posix_acl_... |
556 |
umode_t mode) |
055ffbea0 [PATCH] NFS: Fix ... |
557 558 559 |
{ return 0; } |
5c6a9f7d9 [PATCH] NFS: Cach... |
560 561 562 563 |
static inline void nfs3_forget_cached_acls(struct inode *inode) { } |
b7fa0554c [PATCH] NFS: Add ... |
564 565 566 |
#endif /* CONFIG_NFS_V3_ACL */ /* |
1da177e4c Linux-2.6.12-rc2 |
567 568 |
* inline functions */ |
433c92379 NFS: Clean up nfs... |
569 |
static inline loff_t nfs_size_to_loff_t(__u64 size) |
1da177e4c Linux-2.6.12-rc2 |
570 |
{ |
433c92379 NFS: Clean up nfs... |
571 572 |
if (size > (__u64) OFFSET_MAX - 1) return OFFSET_MAX - 1; |
1da177e4c Linux-2.6.12-rc2 |
573 574 575 576 577 578 579 580 581 582 583 |
return (loff_t) size; } static inline ino_t nfs_fileid_to_ino_t(u64 fileid) { ino_t ino = (ino_t) fileid; if (sizeof(ino_t) < sizeof(u64)) ino ^= fileid >> (sizeof(u64)-sizeof(ino_t)) * 8; return ino; } |
1da177e4c Linux-2.6.12-rc2 |
584 |
#define NFS_JUKEBOX_RETRY_TIME (5 * HZ) |
1da177e4c Linux-2.6.12-rc2 |
585 586 587 588 589 590 591 592 593 594 595 596 597 598 |
#endif /* __KERNEL__ */ /* * NFS debug flags */ #define NFSDBG_VFS 0x0001 #define NFSDBG_DIRCACHE 0x0002 #define NFSDBG_LOOKUPCACHE 0x0004 #define NFSDBG_PAGECACHE 0x0008 #define NFSDBG_PROC 0x0010 #define NFSDBG_XDR 0x0020 #define NFSDBG_FILE 0x0040 #define NFSDBG_ROOT 0x0080 #define NFSDBG_CALLBACK 0x0100 |
24c8dbbb5 NFS: Generalise t... |
599 |
#define NFSDBG_CLIENT 0x0200 |
f18289931 NFS: Add a new NF... |
600 |
#define NFSDBG_MOUNT 0x0400 |
c6a6f19e2 NFS: Add FS-Cache... |
601 |
#define NFSDBG_FSCACHE 0x0800 |
85e174ba6 NFS: set layout d... |
602 |
#define NFSDBG_PNFS 0x1000 |
7ab672ce3 NFSv4.1: pnfs: fi... |
603 |
#define NFSDBG_PNFS_LD 0x2000 |
1da177e4c Linux-2.6.12-rc2 |
604 605 606 |
#define NFSDBG_ALL 0xFFFF #ifdef __KERNEL__ |
4dc2eaecd NFS: move NFS_DEB... |
607 608 609 610 611 612 613 614 |
/* * Enable debugging support for nfs client. * Requires RPC_DEBUG. */ #ifdef RPC_DEBUG # define NFS_DEBUG #endif |
1da177e4c Linux-2.6.12-rc2 |
615 616 617 618 619 620 621 622 623 |
# undef ifdebug # ifdef NFS_DEBUG # define ifdebug(fac) if (unlikely(nfs_debug & NFSDBG_##fac)) # else # define ifdebug(fac) if (0) # endif #endif /* __KERNEL */ #endif |