Blame view
fs/nfs/nfs4_fs.h
11.8 KB
4ce79717c [PATCH] NFS: Head... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/* * linux/fs/nfs/nfs4_fs.h * * Copyright (C) 2005 Trond Myklebust * * NFSv4-specific filesystem definitions and declarations */ #ifndef __LINUX_FS_NFS_NFS4_FS_H #define __LINUX_FS_NFS_NFS4_FS_H #ifdef CONFIG_NFS_V4 struct idmap; |
4ce79717c [PATCH] NFS: Head... |
15 |
enum nfs4_client_state { |
e005e8041 NFSv4: Rename the... |
16 |
NFS4CLNT_MANAGER_RUNNING = 0, |
e598d843c NFSv4: Remove red... |
17 |
NFS4CLNT_CHECK_LEASE, |
58d9714a4 NFSv4: Send RENEW... |
18 |
NFS4CLNT_LEASE_EXPIRED, |
b79a4a1b4 NFSv4: Fix state ... |
19 20 |
NFS4CLNT_RECLAIM_REBOOT, NFS4CLNT_RECLAIM_NOGRACE, |
707fb4b32 NFSv4: Clean up N... |
21 |
NFS4CLNT_DELEGRETURN, |
43f1b3da8 pnfs: add CB_LAYO... |
22 |
NFS4CLNT_LAYOUTRECALL, |
6df08189f nfs41: rename cl_... |
23 |
NFS4CLNT_SESSION_RESET, |
b9efa1b27 nfs41: implement ... |
24 |
NFS4CLNT_RECALL_SLOT, |
fd954ae12 NFSv4.1: Don't lo... |
25 |
NFS4CLNT_LEASE_CONFIRM, |
78fe0f41d NFS: use scope fr... |
26 |
NFS4CLNT_SERVER_SCOPE_MISMATCH, |
4ce79717c [PATCH] NFS: Head... |
27 |
}; |
a2118c33a NFSv41: Don't sto... |
28 |
enum nfs4_session_state { |
1055d76d9 NFSv4.1: There is... |
29 |
NFS4_SESSION_INITING, |
a2118c33a NFSv41: Don't sto... |
30 31 |
NFS4_SESSION_DRAINING, }; |
2f60ea6b8 NFSv4: The NFSv4.... |
32 33 |
#define NFS4_RENEW_TIMEOUT 0x01 #define NFS4_RENEW_DELEGATION_CB 0x02 |
97dc13594 NFSv41: Clean up ... |
34 35 |
struct nfs4_minor_version_ops { u32 minor_version; |
7c5130588 NFS: lookup suppo... |
36 37 |
int (*call_sync)(struct rpc_clnt *clnt, struct nfs_server *server, |
97dc13594 NFSv41: Clean up ... |
38 39 40 41 |
struct rpc_message *msg, struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, int cache_reply); |
e047a10c1 NFSv41: Fix nfs_a... |
42 43 |
int (*validate_stateid)(struct nfs_delegation *, const nfs4_stateid *); |
fca78d6d2 NFS: Add SECINFO_... |
44 45 |
int (*find_root_sec)(struct nfs_server *, struct nfs_fh *, struct nfs_fsinfo *); |
c48f4f354 NFSv41: Convert t... |
46 47 48 |
const struct nfs4_state_recovery_ops *reboot_recovery_ops; const struct nfs4_state_recovery_ops *nograce_recovery_ops; const struct nfs4_state_maintenance_ops *state_renewal_ops; |
97dc13594 NFSv41: Clean up ... |
49 |
}; |
4ce79717c [PATCH] NFS: Head... |
50 |
/* |
cee54fc94 NFSv4: Add functi... |
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
* struct rpc_sequence ensures that RPC calls are sent in the exact * order that they appear on the list. */ struct rpc_sequence { struct rpc_wait_queue wait; /* RPC call delay queue */ spinlock_t lock; /* Protects the list */ struct list_head list; /* Defines sequence of RPC calls */ }; #define NFS_SEQID_CONFIRMED 1 struct nfs_seqid_counter { struct rpc_sequence *sequence; int flags; u32 counter; }; struct nfs_seqid { |
cee54fc94 NFSv4: Add functi... |
68 |
struct nfs_seqid_counter *sequence; |
4e51336a0 NFSv4: Final twea... |
69 |
struct list_head list; |
cee54fc94 NFSv4: Add functi... |
70 71 72 73 74 75 76 |
}; static inline void nfs_confirm_seqid(struct nfs_seqid_counter *seqid, int status) { if (seqid_mutating_err(-status)) seqid->flags |= NFS_SEQID_CONFIRMED; } |
9f958ab88 NFSv4: Reduce the... |
77 78 79 80 |
struct nfs_unique_id { struct rb_node rb_node; __u64 id; }; |
cee54fc94 NFSv4: Add functi... |
81 |
/* |
4ce79717c [PATCH] NFS: Head... |
82 83 84 |
* NFS4 state_owners and lock_owners are simply labels for ordered * sequences of RPC calls. Their sole purpose is to provide once-only * semantics by allowing the server to identify replayed requests. |
4ce79717c [PATCH] NFS: Head... |
85 86 |
*/ struct nfs4_state_owner { |
9f958ab88 NFSv4: Reduce the... |
87 |
struct nfs_unique_id so_owner_id; |
6f2e64d3e NFSv4: Make the N... |
88 |
struct nfs_server *so_server; |
0aaaf5c42 NFS: Cache state ... |
89 90 |
struct list_head so_lru; unsigned long so_expires; |
24d292b89 NFS: Move cl_stat... |
91 |
struct rb_node so_server_node; |
4ce79717c [PATCH] NFS: Head... |
92 93 |
struct rpc_cred *so_cred; /* Associated cred */ |
9f958ab88 NFSv4: Reduce the... |
94 95 96 |
spinlock_t so_lock; atomic_t so_count; |
7eff03aec NFSv4: Add a reco... |
97 |
unsigned long so_flags; |
4ce79717c [PATCH] NFS: Head... |
98 |
struct list_head so_states; |
cee54fc94 NFSv4: Add functi... |
99 100 |
struct nfs_seqid_counter so_seqid; struct rpc_sequence so_sequence; |
4ce79717c [PATCH] NFS: Head... |
101 |
}; |
7eff03aec NFSv4: Add a reco... |
102 103 104 105 |
enum { NFS_OWNER_RECLAIM_REBOOT, NFS_OWNER_RECLAIM_NOGRACE }; |
afe6c27cc nfs: change nfs4_... |
106 107 108 |
#define NFS_LOCK_NEW 0 #define NFS_LOCK_RECLAIM 1 #define NFS_LOCK_EXPIRED 2 |
4ce79717c [PATCH] NFS: Head... |
109 110 111 112 113 114 115 116 117 118 119 |
/* * struct nfs4_state maintains the client-side state for a given * (state_owner,inode) tuple (OPEN) or state_owner (LOCK). * * OPEN: * In order to know when to OPEN_DOWNGRADE or CLOSE the state on the server, * we need to know how many files are open for reading or writing on a * given inode. This information too is stored here. * * LOCK: one nfs4_state (LOCK) to hold the lock stateid nfs4_state(OPEN) */ |
77041ed9b NFSv4: Ensure the... |
120 121 122 123 124 125 126 127 128 129 |
struct nfs4_lock_owner { unsigned int lo_type; #define NFS4_ANY_LOCK_TYPE (0U) #define NFS4_FLOCK_LOCK_TYPE (1U << 0) #define NFS4_POSIX_LOCK_TYPE (1U << 1) union { fl_owner_t posix_owner; pid_t flock_owner; } lo_u; }; |
4ce79717c [PATCH] NFS: Head... |
130 131 |
struct nfs4_lock_state { struct list_head ls_locks; /* Other lock stateids */ |
8d0a8a9d0 [PATCH] NFSv4: Cl... |
132 |
struct nfs4_state * ls_state; /* Pointer to open state */ |
4ce79717c [PATCH] NFS: Head... |
133 134 |
#define NFS_LOCK_INITIALIZED 1 int ls_flags; |
cee54fc94 NFSv4: Add functi... |
135 |
struct nfs_seqid_counter ls_seqid; |
d0dc3701c NFSv4: Give the l... |
136 |
struct rpc_sequence ls_sequence; |
9f958ab88 NFSv4: Reduce the... |
137 |
struct nfs_unique_id ls_id; |
4ce79717c [PATCH] NFS: Head... |
138 139 |
nfs4_stateid ls_stateid; atomic_t ls_count; |
77041ed9b NFSv4: Ensure the... |
140 |
struct nfs4_lock_owner ls_owner; |
4ce79717c [PATCH] NFS: Head... |
141 142 143 144 145 |
}; /* bits for nfs4_state->flags */ enum { LK_STATE_IN_USE, |
003707c72 NFSv4: Always use... |
146 147 148 149 |
NFS_DELEGATED_STATE, /* Current stateid is delegation */ NFS_O_RDONLY_STATE, /* OPEN stateid has read-only state */ NFS_O_WRONLY_STATE, /* OPEN stateid has write-only state */ NFS_O_RDWR_STATE, /* OPEN stateid has read/write state */ |
b79a4a1b4 NFSv4: Fix state ... |
150 151 |
NFS_STATE_RECLAIM_REBOOT, /* OPEN stateid server rebooted */ NFS_STATE_RECLAIM_NOGRACE, /* OPEN stateid needs to recover state */ |
8e469ebd6 NFSv4: Don't allo... |
152 |
NFS_STATE_POSIX_LOCKS, /* Posix locks are supported */ |
4ce79717c [PATCH] NFS: Head... |
153 154 155 156 157 158 159 160 161 162 163 |
}; struct nfs4_state { struct list_head open_states; /* List of states for the same state_owner */ struct list_head inode_states; /* List of states for the same inode */ struct list_head lock_states; /* List of subservient lock stateids */ struct nfs4_state_owner *owner; /* Pointer to the open owner */ struct inode *inode; /* Pointer to the inode */ unsigned long flags; /* Do we hold any locks? */ |
8d0a8a9d0 [PATCH] NFSv4: Cl... |
164 |
spinlock_t state_lock; /* Protects the lock_states list */ |
4ce79717c [PATCH] NFS: Head... |
165 |
|
8bda4e4c9 NFSv4: Fix up sta... |
166 |
seqlock_t seqlock; /* Protects the stateid/open_stateid */ |
003707c72 NFSv4: Always use... |
167 168 |
nfs4_stateid stateid; /* Current stateid: may be delegation */ nfs4_stateid open_stateid; /* OPEN stateid */ |
4ce79717c [PATCH] NFS: Head... |
169 |
|
8bda4e4c9 NFSv4: Fix up sta... |
170 |
/* The following 3 fields are protected by owner->so_lock */ |
003707c72 NFSv4: Always use... |
171 172 173 |
unsigned int n_rdonly; /* Number of read-only references */ unsigned int n_wronly; /* Number of write-only references */ unsigned int n_rdwr; /* Number of read/write references */ |
dc0b027df NFSv4: Convert th... |
174 |
fmode_t state; /* State on the server (R,W, or RW) */ |
4ce79717c [PATCH] NFS: Head... |
175 176 177 178 179 180 181 |
atomic_t count; }; struct nfs4_exception { long timeout; int retry; |
9e33bed55 NFSv4: Add recove... |
182 |
struct nfs4_state *state; |
4ce79717c [PATCH] NFS: Head... |
183 184 185 |
}; struct nfs4_state_recovery_ops { |
7eff03aec NFSv4: Add a reco... |
186 |
int owner_flag_bit; |
b79a4a1b4 NFSv4: Fix state ... |
187 |
int state_flag_bit; |
4ce79717c [PATCH] NFS: Head... |
188 189 |
int (*recover_open)(struct nfs4_state_owner *, struct nfs4_state *); int (*recover_lock)(struct nfs4_state *, struct file_lock *); |
591d71cbd nfs41: establish ... |
190 |
int (*establish_clid)(struct nfs_client *, struct rpc_cred *); |
90a16617e nfs41: add a get_... |
191 |
struct rpc_cred * (*get_clid_cred)(struct nfs_client *); |
fce5c838e nfs41: RECLAIM_CO... |
192 |
int (*reclaim_complete)(struct nfs_client *); |
4ce79717c [PATCH] NFS: Head... |
193 |
}; |
29fba38b7 nfs41: lease renewal |
194 |
struct nfs4_state_maintenance_ops { |
2f60ea6b8 NFSv4: The NFSv4.... |
195 |
int (*sched_state_renewal)(struct nfs_client *, struct rpc_cred *, unsigned); |
a7b721037 nfs41: introduce ... |
196 |
struct rpc_cred * (*get_state_renewal_cred_locked)(struct nfs_client *); |
8e69514f2 nfs41: support mi... |
197 |
int (*renew_lease)(struct nfs_client *, struct rpc_cred *); |
29fba38b7 nfs41: lease renewal |
198 |
}; |
f786aa90e constify dentry_o... |
199 |
extern const struct dentry_operations nfs4_dentry_operations; |
92e1d5be9 [PATCH] mark stru... |
200 |
extern const struct inode_operations nfs4_dir_inode_operations; |
6b3b5496d [PATCH] NFSv4: Ad... |
201 |
|
4ce79717c [PATCH] NFS: Head... |
202 |
/* nfs4proc.c */ |
bb8b27e50 NFSv4: Clean up t... |
203 204 |
extern int nfs4_proc_setclientid(struct nfs_client *, u32, unsigned short, struct rpc_cred *, struct nfs4_setclientid_res *); extern int nfs4_proc_setclientid_confirm(struct nfs_client *, struct nfs4_setclientid_res *arg, struct rpc_cred *); |
4d643d1df nfs41: add create... |
205 |
extern int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred); |
591d71cbd nfs41: establish ... |
206 |
extern int nfs4_init_clientid(struct nfs_client *, struct rpc_cred *); |
4d643d1df nfs41: add create... |
207 |
extern int nfs41_init_clientid(struct nfs_client *, struct rpc_cred *); |
643168c2d nfs4_closedata do... |
208 |
extern int nfs4_do_close(struct nfs4_state *state, gfp_t gfp_mask, int wait, bool roc); |
55a975937 NFS: Ensure the c... |
209 |
extern int nfs4_server_capabilities(struct nfs_server *server, struct nfs_fh *fhandle); |
56659e992 NFSv4: 'constify'... |
210 |
extern int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, |
7aaa0b3bd NFSv4: convert fs... |
211 |
struct nfs4_fs_locations *fs_locations, struct page *page); |
d3c7b7ccc NFSv4: Add suppor... |
212 |
extern void nfs4_release_lockowner(const struct nfs4_lock_state *); |
64c2ce8b7 nfsv4: Switch to ... |
213 |
extern const struct xattr_handler *nfs4_xattr_handlers[]; |
4ce79717c [PATCH] NFS: Head... |
214 |
|
557134a39 nfs41: sessions c... |
215 |
#if defined(CONFIG_NFS_V4_1) |
035168ab3 NFSv4.1: Make nfs... |
216 217 218 219 220 221 |
static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server) { return server->nfs_client->cl_session; } extern int nfs4_setup_sequence(const struct nfs_server *server, |
fbcd4abcb nfs41: setup_sequ... |
222 223 |
struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, int cache_reply, struct rpc_task *task); |
dc70d7b31 NFSv4.1: filelayo... |
224 225 226 |
extern int nfs41_setup_sequence(struct nfs4_session *session, struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, int cache_reply, struct rpc_task *task); |
557134a39 nfs41: sessions c... |
227 228 |
extern void nfs4_destroy_session(struct nfs4_session *session); extern struct nfs4_session *nfs4_alloc_session(struct nfs_client *clp); |
f26468fb9 NFSv41: Fix nfs4_... |
229 |
extern int nfs4_proc_create_session(struct nfs_client *); |
c3fad1b1a nfs41: add sessio... |
230 |
extern int nfs4_proc_destroy_session(struct nfs4_session *); |
fccba8045 NFSv4: Fix an NFS... |
231 |
extern int nfs4_init_session(struct nfs_server *server); |
9430fb6b5 nfs41: nfs41_setu... |
232 233 |
extern int nfs4_proc_get_lease_time(struct nfs_client *clp, struct nfs_fsinfo *fsinfo); |
863a3c6c6 NFSv4.1: layoutco... |
234 |
extern int nfs4_proc_layoutcommit(struct nfs4_layoutcommit_data *data, |
ef3115378 NFSv4.1 convert l... |
235 |
bool sync); |
94de8b27d NFSv4.1: add MDS ... |
236 237 238 239 240 241 242 |
static inline bool is_ds_only_client(struct nfs_client *clp) { return (clp->cl_exchange_flags & EXCHGID4_FLAG_MASK_PNFS) == EXCHGID4_FLAG_USE_PNFS_DS; } |
d83217c13 NFSv4.1: data ser... |
243 244 245 246 247 248 |
static inline bool is_ds_client(struct nfs_client *clp) { return clp->cl_exchange_flags & EXCHGID4_FLAG_USE_PNFS_DS; } |
fbcd4abcb nfs41: setup_sequ... |
249 |
#else /* CONFIG_NFS_v4_1 */ |
035168ab3 NFSv4.1: Make nfs... |
250 251 252 253 254 255 |
static inline struct nfs4_session *nfs4_get_session(const struct nfs_server *server) { return NULL; } static inline int nfs4_setup_sequence(const struct nfs_server *server, |
fbcd4abcb nfs41: setup_sequ... |
256 257 258 259 260 |
struct nfs4_sequence_args *args, struct nfs4_sequence_res *res, int cache_reply, struct rpc_task *task) { return 0; } |
fccba8045 NFSv4: Fix an NFS... |
261 262 263 264 265 |
static inline int nfs4_init_session(struct nfs_server *server) { return 0; } |
94de8b27d NFSv4.1: add MDS ... |
266 267 268 |
static inline bool is_ds_only_client(struct nfs_client *clp) |
d83217c13 NFSv4.1: data ser... |
269 270 271 272 273 274 |
{ return false; } static inline bool is_ds_client(struct nfs_client *clp) |
94de8b27d NFSv4.1: add MDS ... |
275 276 277 |
{ return false; } |
557134a39 nfs41: sessions c... |
278 |
#endif /* CONFIG_NFS_V4_1 */ |
4ce79717c [PATCH] NFS: Head... |
279 |
|
97dc13594 NFSv41: Clean up ... |
280 |
extern const struct nfs4_minor_version_ops *nfs_v4_minor_ops[]; |
29fba38b7 nfs41: lease renewal |
281 |
|
4ce79717c [PATCH] NFS: Head... |
282 283 284 |
extern const u32 nfs4_fattr_bitmap[2]; extern const u32 nfs4_statfs_bitmap[2]; extern const u32 nfs4_pathconf_bitmap[2]; |
dae100c2b pnfs: ask for lay... |
285 |
extern const u32 nfs4_fsinfo_bitmap[3]; |
830b8e33f NFSv4: Define an ... |
286 |
extern const u32 nfs4_fs_locations_bitmap[2]; |
4ce79717c [PATCH] NFS: Head... |
287 288 |
/* nfs4renewd.c */ |
adfa6f980 NFS: Rename struc... |
289 |
extern void nfs4_schedule_state_renewal(struct nfs_client *); |
4ce79717c [PATCH] NFS: Head... |
290 |
extern void nfs4_renewd_prepare_shutdown(struct nfs_server *); |
adfa6f980 NFS: Rename struc... |
291 |
extern void nfs4_kill_renewd(struct nfs_client *); |
65f27f384 WorkStruct: Pass ... |
292 |
extern void nfs4_renew_state(struct work_struct *); |
4ce79717c [PATCH] NFS: Head... |
293 294 |
/* nfs4state.c */ |
a7b721037 nfs41: introduce ... |
295 |
struct rpc_cred *nfs4_get_setclientid_cred(struct nfs_client *clp); |
6dc9d57af NFSv4: Callers to... |
296 |
struct rpc_cred *nfs4_get_renew_cred_locked(struct nfs_client *clp); |
a7b721037 nfs41: introduce ... |
297 298 |
#if defined(CONFIG_NFS_V4_1) struct rpc_cred *nfs4_get_machine_cred_locked(struct nfs_client *clp); |
b4b82607f nfs41: get_clid_c... |
299 |
struct rpc_cred *nfs4_get_exchange_id_cred(struct nfs_client *clp); |
0400a6b0c NFSv4/4.1: Fix nf... |
300 301 302 303 304 |
extern void nfs4_schedule_session_recovery(struct nfs4_session *); #else static inline void nfs4_schedule_session_recovery(struct nfs4_session *session) { } |
a7b721037 nfs41: introduce ... |
305 |
#endif /* CONFIG_NFS_V4_1 */ |
4ce79717c [PATCH] NFS: Head... |
306 307 308 |
extern struct nfs4_state_owner * nfs4_get_state_owner(struct nfs_server *, struct rpc_cred *); extern void nfs4_put_state_owner(struct nfs4_state_owner *); |
0aaaf5c42 NFS: Cache state ... |
309 |
extern void nfs4_purge_state_owners(struct nfs_server *); |
4ce79717c [PATCH] NFS: Head... |
310 311 |
extern struct nfs4_state * nfs4_get_open_state(struct inode *, struct nfs4_state_owner *); extern void nfs4_put_open_state(struct nfs4_state *); |
643168c2d nfs4_closedata do... |
312 313 |
extern void nfs4_close_state(struct nfs4_state *, fmode_t); extern void nfs4_close_sync(struct nfs4_state *, fmode_t); |
dc0b027df NFSv4: Convert th... |
314 |
extern void nfs4_state_set_mode_locked(struct nfs4_state *, fmode_t); |
0400a6b0c NFSv4/4.1: Fix nf... |
315 |
extern void nfs4_schedule_lease_recovery(struct nfs_client *); |
b0d3ded1a NFSv4: Clean up n... |
316 |
extern void nfs4_schedule_state_manager(struct nfs_client *); |
042b60beb NFSv4: renewd nee... |
317 |
extern void nfs4_schedule_path_down_recovery(struct nfs_client *clp); |
0400a6b0c NFSv4/4.1: Fix nf... |
318 |
extern void nfs4_schedule_stateid_recovery(const struct nfs_server *, struct nfs4_state *); |
0629e370d nfs41: check SEQU... |
319 |
extern void nfs41_handle_sequence_flag_errors(struct nfs_client *clp, u32 flags); |
b9efa1b27 nfs41: implement ... |
320 |
extern void nfs41_handle_recall_slot(struct nfs_client *clp); |
78fe0f41d NFS: use scope fr... |
321 322 |
extern void nfs41_handle_server_scope(struct nfs_client *, struct server_scope **); |
faf5f49c2 NFSv4: Make NFS c... |
323 |
extern void nfs4_put_lock_state(struct nfs4_lock_state *lsp); |
8d0a8a9d0 [PATCH] NFSv4: Cl... |
324 |
extern int nfs4_set_lock_state(struct nfs4_state *state, struct file_lock *fl); |
77041ed9b NFSv4: Ensure the... |
325 |
extern void nfs4_copy_stateid(nfs4_stateid *, struct nfs4_state *, fl_owner_t, pid_t); |
4ce79717c [PATCH] NFS: Head... |
326 |
|
8535b2be5 NFSv4: Don't use ... |
327 |
extern struct nfs_seqid *nfs_alloc_seqid(struct nfs_seqid_counter *counter, gfp_t gfp_mask); |
cee54fc94 NFSv4: Add functi... |
328 329 330 |
extern int nfs_wait_on_sequence(struct nfs_seqid *seqid, struct rpc_task *task); extern void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid); extern void nfs_increment_lock_seqid(int status, struct nfs_seqid *seqid); |
72211dbe7 NFSv4: Release th... |
331 |
extern void nfs_release_seqid(struct nfs_seqid *seqid); |
cee54fc94 NFSv4: Add functi... |
332 |
extern void nfs_free_seqid(struct nfs_seqid *seqid); |
4ce79717c [PATCH] NFS: Head... |
333 334 335 |
extern const nfs4_stateid zero_stateid; /* nfs4xdr.c */ |
4ce79717c [PATCH] NFS: Head... |
336 337 338 339 340 341 |
extern struct rpc_procinfo nfs4_procedures[]; struct nfs4_mount_data; /* callback_xdr.c */ extern struct svc_version nfs4_callback_version1; |
07bccc2dd nfs41: add suppor... |
342 |
extern struct svc_version nfs4_callback_version4; |
4ce79717c [PATCH] NFS: Head... |
343 344 |
#else |
643168c2d nfs4_closedata do... |
345 346 |
#define nfs4_close_state(a, b) do { } while (0) #define nfs4_close_sync(a, b) do { } while (0) |
4ce79717c [PATCH] NFS: Head... |
347 348 349 |
#endif /* CONFIG_NFS_V4 */ #endif /* __LINUX_FS_NFS_NFS4_FS.H */ |