ReactOS 0.4.16-dev-258-g81860b4
nfs41.h
Go to the documentation of this file.
1/* NFSv4.1 client for Windows
2 * Copyright © 2012 The Regents of the University of Michigan
3 *
4 * Olga Kornievskaia <aglo@umich.edu>
5 * Casey Bodley <cbodley@umich.edu>
6 *
7 * This library is free software; you can redistribute it and/or modify it
8 * under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation; either version 2.1 of the License, or (at
10 * your option) any later version.
11 *
12 * This library is distributed in the hope that it will be useful, but
13 * without any warranty; without even the implied warranty of merchantability
14 * or fitness for a particular purpose. See the GNU Lesser General Public
15 * License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with this library; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20 */
21
22#ifndef __NFS41__
23#define __NFS41__
24
25#include "util.h"
26#include "list.h"
27
28
29struct __nfs41_session;
30struct __nfs41_client;
31struct __rpc_client;
32struct __nfs41_root;
33
36
37typedef struct __nfs41_superblock {
39 struct list_entry entry; /* position in nfs41_server.superblocks */
40
44
48
49 /* constant filesystem attributes */
50 unsigned int layout_types : 3;
51 unsigned int aclsupport : 3;
52 unsigned int cansettime : 1;
53 unsigned int link_support : 1;
54 unsigned int symlink_support : 1;
55 unsigned int ea_support : 1;
56 unsigned int case_preserving : 1;
57 unsigned int case_insensitive : 1;
58
59 /* variable filesystem attributes */
63 time_t cache_expiration; /* applies to space_ attributes */
64
65 SRWLOCK lock;
67
70 SRWLOCK lock;
72
74 multi_addr4 addrs; /* list of addrs we've used with this server */
76 SRWLOCK lock;
77};
78
79typedef struct __nfs41_server {
80 char scope[NFS4_OPAQUE_LIMIT]; /* server_scope from exchangeid */
81 char owner[NFS4_OPAQUE_LIMIT]; /* server_owner.major_id from exchangeid */
85 struct list_entry entry; /* position in global server list */
88
93};
94
100 struct list_entry client_entry; /* entry in nfs41_client.delegations */
102
104 SRWLOCK lock;
105 CONDITION_VARIABLE cond;
106
107 bool_t revoked; /* for recovery, accessed under client.state.lock */
108
109 HANDLE srv_open; /* for rdbss cache invalidation */
111
112typedef struct __nfs41_lock_state {
113 struct list_entry open_entry; /* entry in nfs41_open_state.locks */
117 uint32_t delegated : 1; /* whether or not there is state on the server */
120
121/* nfs41_open_state reference counting:
122 * one reference is held implicitly by the driver (initialized to 1 on
123 * OPEN and released on CLOSE). other references must be held during
124 * upcalls to prevent a parallel CLOSE from freeing it prematurely. by
125 * calling upcall_open_state_ref() when parsing the upcall, you are
126 * guaranteed a matching dereference on upcall_cleanup() */
127typedef struct __nfs41_open_state {
138 struct list_entry client_entry; /* entry in nfs41_client.opens */
139 SRWLOCK lock;
143 uint64_t pnfs_last_offset; /* for layoutcommit */
144
145 struct {
148 CONDITION_VARIABLE cond;
150
151 struct { /* list of open lock state for recovery */
157
158 struct {
162 } ea;
163
164 HANDLE srv_open; /* for data cache invalidation */
166
167typedef struct __nfs41_rpc_clnt {
169 SRWLOCK lock;
173 uint32_t addr_index; /* index of addr we're using */
185
186struct client_state {
187 struct list_entry opens; /* list of associated nfs41_open_state */
188 struct list_entry delegations; /* list of associated delegations */
190};
191
192typedef struct __nfs41_client {
198 SRWLOCK exid_lock;
205 struct list_entry root_entry; /* position in nfs41_root.clients */
207
208 struct {
209 CONDITION_VARIABLE cond;
213
214 /* for state recovery on server reboot */
217
218#define NFS41_MAX_NUM_SLOTS NFS41_MAX_RPC_REQS
219typedef struct __nfs41_slot_table {
227 CONDITION_VARIABLE cond;
229
230typedef struct __nfs41_channel_attrs {
239
243};
244
245typedef struct __nfs41_cb_session {
246 struct {
250 const unsigned char *cb_sessionid; /* -> nfs41_session.session_id */
254
255typedef struct __nfs41_session {
262 // array of slots
268
269/* nfs41_root reference counting:
270 * similar to nfs41_open_state, the driver holds an implicit reference
271 * between MOUNT and UNMOUNT. all other upcalls use upcall_root_ref() on
272 * upcall_parse(), which prevents the root/clients from being freed and
273 * guarantees a matching deref on upcall_cleanup() */
274typedef struct __nfs41_root {
285
286
287/* nfs41_namespace.c */
289 IN const char *name,
291 IN uint32_t wsize,
292 IN uint32_t rsize,
293 OUT nfs41_root **root_out);
294
295void nfs41_root_ref(
297
300
303 IN const multi_addr4 *addrs,
304 IN bool_t is_data,
305 IN OPTIONAL uint32_t lease_time,
306 OUT nfs41_client **client_out);
307
311 IN bool_t is_data,
312 IN OPTIONAL uint32_t lease_time,
313 OUT nfs41_client **client_out);
314
318 OUT const fs_location4 **loc_out,
319 OUT nfs41_client **client_out);
320
323{
325 /* return a session for the server at the root of the namespace.
326 * because we created it on mount, it's the first one in the list */
328 client = list_container(root->clients.next, nfs41_client, root_entry);
330 return client->session;
331}
332
333
334/* nfs41_session.c */
337 IN nfs41_session **session_out);
338
341
344 IN uint32_t lease_time);
345
348
351 IN uint32_t slotid,
352 IN uint32_t target_highest_slotid);
353
356 IN uint32_t slotid);
357
360 OUT uint32_t *slot,
361 OUT uint32_t *seq,
362 OUT uint32_t *highest);
363
366 IN OUT uint32_t target_highest_slotid);
367
372 bool_t cachethis);
373
377
378
379/* nfs41_server.c */
381
383 IN const char *hostname,
384 IN unsigned short port,
385 OUT multi_addr4 *addrs);
386
388 IN const char *server_owner_major_id,
389 IN const char *server_scope,
390 IN const netaddr4 *addr,
391 OUT nfs41_server **server_out);
392
395
398
401 OUT multi_addr4 *addrs);
402
403
404/* nfs41_client.c */
406 IN const char *name,
408 OUT client_owner4 *owner);
409
411 IN bool_t is_data);
412
414
416 IN nfs41_rpc_clnt *rpc,
417 IN const client_owner4 *owner,
418 IN bool_t is_data,
419 IN const struct __nfs41_exchange_id_res *exchangeid,
420 OUT nfs41_client **client_out);
421
424
427
430{
431 /* the client's server could change during nfs41_client_renew(),
432 * so access to client->server must be protected */
434 AcquireSRWLockShared(&client->exid_lock);
435 server = client->server;
436 ReleaseSRWLockShared(&client->exid_lock);
437 return server;
438}
439
440
441/* nfs41_superblock.c */
444 IN const nfs41_fsid *fsid,
445 IN const nfs41_fh *parent OPTIONAL,
447
448static __inline void nfs41_superblock_getattr_mask(
450 OUT bitmap4 *attrs)
451{
452 memcpy(attrs, &superblock->default_getattr, sizeof(bitmap4));
453}
456 IN OUT bitmap4 *attrs)
457{
458 bitmap_intersect(attrs, &superblock->supported_attrs);
459}
462 IN OUT bitmap4 *attrs)
463{
464 bitmap_intersect(attrs, &superblock->suppattr_exclcreat);
465}
466
470 OUT struct _FILE_FS_ATTRIBUTE_INFORMATION *FsAttrs);
471
474
476 IN nfs41_superblock_list *superblocks);
477
479 IN nfs41_superblock_list *superblocks);
480
481
482/* nfs41_rpc.c */
484 IN const multi_addr4 *addrs,
485 IN uint32_t wsize,
486 IN uint32_t rsize,
487 IN uint32_t uid,
488 IN uint32_t gid,
490 OUT nfs41_rpc_clnt **rpc_out);
491
493 IN nfs41_rpc_clnt *rpc);
494
496 IN nfs41_rpc_clnt *rpc,
497 IN char *inbuf,
498 OUT char *outbuf);
499
501 IN nfs41_rpc_clnt *rpc)
502{
503 uint32_t id;
504 AcquireSRWLockShared(&rpc->lock);
505 /* only addr_index needs to be protected, as rpc->addrs is write-once */
506 id = rpc->addr_index;
507 ReleaseSRWLockShared(&rpc->lock);
508
509 /* return the netaddr used to create the rpc client */
510 return &rpc->addrs.arr[id];
511}
512
513
514/* open.c */
517
520
521struct __stateid_arg;
524 OUT struct __stateid_arg *arg);
525
526
527/* ea.c */
530 IN struct _FILE_FULL_EA_INFORMATION *ea);
531
532#endif /* __NFS41__ */
static int inbuf
Definition: adnsresfilter.c:73
static int state
Definition: maze.c:121
char * hostname
Definition: ftp.c:88
#define list_container(entry, type, field)
Definition: list.h:33
static __inline void bitmap_intersect(IN bitmap4 *dst, IN const bitmap4 *src)
Definition: util.h:85
Definition: list.h:37
int32_t bool_t
Definition: types.h:101
UINT32 uint32_t
Definition: types.h:75
UINT64 uint64_t
Definition: types.h:77
VOID WINAPI ReleaseSRWLockShared(PSRWLOCK Lock)
Definition: sync.c:43
VOID WINAPI AcquireSRWLockShared(PSRWLOCK Lock)
Definition: sync.c:15
USHORT port
Definition: uri.c:228
r parent
Definition: btrfs.c:3010
__kernel_time_t time_t
Definition: linux.h:252
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint res
Definition: glext.h:9613
GLsizei const GLint * locations
Definition: glext.h:10542
GLuint buffer
Definition: glext.h:5915
GLenum const GLvoid * addr
Definition: glext.h:9621
GLuint id
Definition: glext.h:5910
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
struct __nfs41_client nfs41_client
void nfs41_superblock_fs_attributes(IN const nfs41_superblock *superblock, OUT struct _FILE_FS_ATTRIBUTE_INFORMATION *FsAttrs)
static __inline void nfs41_superblock_supported_attrs_exclcreat(IN const nfs41_superblock *superblock, IN OUT bitmap4 *attrs)
Definition: nfs41.h:460
int nfs41_server_find_or_create(IN const char *server_owner_major_id, IN const char *server_scope, IN const netaddr4 *addr, OUT nfs41_server **server_out)
Definition: nfs41_server.c:221
int nfs41_send_compound(IN nfs41_rpc_clnt *rpc, IN char *inbuf, OUT char *outbuf)
Definition: nfs41_rpc.c:337
static __inline void nfs41_superblock_supported_attrs(IN const nfs41_superblock *superblock, IN OUT bitmap4 *attrs)
Definition: nfs41.h:454
void nfs41_superblock_list_init(IN nfs41_superblock_list *superblocks)
void nfs41_superblock_list_free(IN nfs41_superblock_list *superblocks)
void nfs41_session_sequence(struct __nfs41_sequence_args *args, nfs41_session *session, bool_t cachethis)
void nfs41_root_ref(IN nfs41_root *root)
Definition: namespace.c:92
void nfs41_open_state_deref(IN nfs41_open_state *state)
Definition: open.c:104
int nfs41_session_recall_slot(IN nfs41_session *session, IN OUT uint32_t target_highest_slotid)
void nfs41_server_deref(IN nfs41_server *server)
Definition: nfs41_server.c:155
int nfs41_root_mount_referral(IN nfs41_root *root, IN const fs_locations4 *locations, OUT const fs_location4 **loc_out, OUT nfs41_client **client_out)
Definition: namespace.c:459
void nfs41_session_free_slot(IN nfs41_session *session, IN uint32_t slotid)
struct __nfs41_delegation_state nfs41_delegation_state
int nfs41_session_set_lease(IN nfs41_session *session, IN uint32_t lease_time)
static __inline nfs41_server * client_server(IN nfs41_client *client)
Definition: nfs41.h:428
void nfs41_session_free(IN nfs41_session *session)
void nfs41_open_state_ref(IN nfs41_open_state *state)
Definition: open.c:96
int nfs41_client_owner(IN const char *name, IN uint32_t sec_flavor, OUT client_owner4 *owner)
Definition: nfs41_client.c:358
int nfs41_rpc_clnt_create(IN const multi_addr4 *addrs, IN uint32_t wsize, IN uint32_t rsize, IN uint32_t uid, IN uint32_t gid, IN uint32_t sec_flavor, OUT nfs41_rpc_clnt **rpc_out)
Definition: nfs41_rpc.c:145
void nfs41_server_list_init()
Definition: nfs41_server.c:48
struct __nfs41_lock_state nfs41_lock_state
void nfs41_session_get_slot(IN nfs41_session *session, OUT uint32_t *slot, OUT uint32_t *seq, OUT uint32_t *highest)
struct __nfs41_root nfs41_root
int nfs41_root_create(IN const char *name, IN uint32_t sec_flavor, IN uint32_t wsize, IN uint32_t rsize, OUT nfs41_root **root_out)
Definition: namespace.c:37
int nfs41_server_resolve(IN const char *hostname, IN unsigned short port, OUT multi_addr4 *addrs)
Definition: nfs41_server.c:275
struct __nfs41_slot_table nfs41_slot_table
#define NFS41_MAX_NUM_SLOTS
Definition: nfs41.h:218
uint32_t nfs41_exchange_id_flags(IN bool_t is_data)
Definition: nfs41_client.c:36
void nfs41_superblock_space_changed(IN nfs41_superblock *superblock)
struct __nfs41_open_state nfs41_open_state
int nfs41_session_create(IN nfs41_client *client, IN nfs41_session **session_out)
struct __nfs41_session nfs41_session
struct __nfs41_server nfs41_server
int nfs41_root_mount_server(IN nfs41_root *root, IN nfs41_server *server, IN bool_t is_data, IN OPTIONAL uint32_t lease_time, OUT nfs41_client **client_out)
void nfs41_root_deref(IN nfs41_root *root)
Definition: namespace.c:100
int nfs41_ea_set(IN nfs41_open_state *state, IN struct _FILE_FULL_EA_INFORMATION *ea)
struct __nfs41_rpc_clnt nfs41_rpc_clnt
int nfs41_session_renew(IN nfs41_session *session)
void nfs41_server_addrs(IN nfs41_server *server, OUT multi_addr4 *addrs)
Definition: nfs41_server.c:203
struct __nfs41_cb_session nfs41_cb_session
struct __nfs41_superblock_list nfs41_superblock_list
static __inline netaddr4 * nfs41_rpc_netaddr(IN nfs41_rpc_clnt *rpc)
Definition: nfs41.h:500
int nfs41_root_mount_addrs(IN nfs41_root *root, IN const multi_addr4 *addrs, IN bool_t is_data, IN OPTIONAL uint32_t lease_time, OUT nfs41_client **client_out)
Definition: namespace.c:335
delegation_status
Definition: nfs41.h:89
@ DELEGATION_RETURNED
Definition: nfs41.h:92
@ DELEGATION_GRANTED
Definition: nfs41.h:90
@ DELEGATION_RETURNING
Definition: nfs41.h:91
void nfs41_session_bump_seq(IN nfs41_session *session, IN uint32_t slotid, IN uint32_t target_highest_slotid)
Definition: nfs41_session.c:80
int nfs41_superblock_for_fh(IN nfs41_session *session, IN const nfs41_fsid *fsid, IN const nfs41_fh *parent OPTIONAL, OUT nfs41_path_fh *file)
static __inline nfs41_session * nfs41_root_session(IN nfs41_root *root)
Definition: nfs41.h:321
void nfs41_rpc_clnt_free(IN nfs41_rpc_clnt *rpc)
Definition: nfs41_rpc.c:243
static __inline void nfs41_superblock_getattr_mask(IN const nfs41_superblock *superblock, OUT bitmap4 *attrs)
Definition: nfs41.h:448
struct __nfs41_superblock nfs41_superblock
struct __nfs41_channel_attrs nfs41_channel_attrs
void nfs41_client_free(IN nfs41_client *client)
Definition: nfs41_client.c:206
void nfs41_server_ref(IN nfs41_server *server)
Definition: nfs41_server.c:145
int nfs41_client_create(IN nfs41_rpc_clnt *rpc, IN const client_owner4 *owner, IN bool_t is_data, IN const struct __nfs41_exchange_id_res *exchangeid, OUT nfs41_client **client_out)
int nfs41_client_renew(IN nfs41_client *client)
Definition: nfs41_client.c:168
void nfs41_open_stateid_arg(IN nfs41_open_state *state, OUT struct __stateid_arg *arg)
int nfs41_session_bad_slot(IN nfs41_session *session, IN OUT struct __nfs41_sequence_args *args)
#define NFS4_SESSIONID_SIZE
Definition: nfs41_const.h:32
#define NFS41_MAX_SERVER_CACHE
Definition: nfs41_const.h:39
#define NFS4_OPAQUE_LIMIT
Definition: nfs41_const.h:31
sec_flavor
Definition: nfs41_ops.h:861
long LONG
Definition: pedump.c:60
static FILE * client
Definition: client.c:41
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
uint32_t cb_slotid
Definition: nfs41.h:252
struct __nfs41_cb_session::@32 replay
uint32_t cb_seqnum
Definition: nfs41.h:251
const unsigned char * cb_sessionid
Definition: nfs41.h:250
uint32_t ca_maxrequestsize
Definition: nfs41.h:232
uint32_t ca_headerpadsize
Definition: nfs41.h:231
uint32_t * ca_rdma_ird
Definition: nfs41.h:237
uint32_t ca_maxrequests
Definition: nfs41.h:236
uint32_t ca_maxresponsesize_cached
Definition: nfs41.h:234
uint32_t ca_maxresponsesize
Definition: nfs41.h:233
uint32_t ca_maxoperations
Definition: nfs41.h:235
nfs41_rpc_clnt * rpc
Definition: nfs41.h:201
CONDITION_VARIABLE cond
Definition: nfs41.h:209
uint32_t roles
Definition: nfs41.h:197
bool_t in_recovery
Definition: nfs41.h:211
struct pnfs_file_device_list * devices
Definition: nfs41.h:204
struct __nfs41_client::@31 recovery
uint64_t clnt_id
Definition: nfs41.h:195
bool_t is_data
Definition: nfs41.h:202
client_owner4 owner
Definition: nfs41.h:194
struct list_entry root_entry
Definition: nfs41.h:205
nfs41_server * server
Definition: nfs41.h:193
struct __nfs41_session * session
Definition: nfs41.h:199
CRITICAL_SECTION lock
Definition: nfs41.h:210
SRWLOCK exid_lock
Definition: nfs41.h:198
struct client_state state
Definition: nfs41.h:215
struct __nfs41_root * root
Definition: nfs41.h:206
uint32_t seq_id
Definition: nfs41.h:196
SRWLOCK session_lock
Definition: nfs41.h:200
struct pnfs_layout_list * layouts
Definition: nfs41.h:203
enum delegation_status status
Definition: nfs41.h:103
struct list_entry client_entry
Definition: nfs41.h:100
nfs41_abs_path path
Definition: nfs41.h:97
nfs41_path_fh file
Definition: nfs41.h:99
open_delegation4 state
Definition: nfs41.h:96
nfs41_path_fh parent
Definition: nfs41.h:98
CONDITION_VARIABLE cond
Definition: nfs41.h:105
uint32_t id
Definition: nfs41.h:118
uint32_t delegated
Definition: nfs41.h:117
struct list_entry open_entry
Definition: nfs41.h:113
uint32_t exclusive
Definition: nfs41.h:116
uint64_t length
Definition: nfs41.h:115
uint64_t offset
Definition: nfs41.h:114
nfs41_abs_path path
Definition: nfs41.h:128
bool_t do_close
Definition: nfs41.h:134
SRWLOCK lock
Definition: nfs41.h:139
uint32_t type
Definition: nfs41.h:133
state_owner4 owner
Definition: nfs41.h:136
CRITICAL_SECTION lock
Definition: nfs41.h:155
struct __nfs41_session * session
Definition: nfs41.h:132
nfs41_delegation_state * state
Definition: nfs41.h:146
struct __nfs41_open_state::@30 ea
nfs41_path_fh file
Definition: nfs41.h:130
CONDITION_VARIABLE cond
Definition: nfs41.h:148
nfs41_readdir_cookie cookie
Definition: nfs41.h:131
uint32_t share_access
Definition: nfs41.h:141
HANDLE srv_open
Definition: nfs41.h:164
struct __nfs41_open_state::@28 delegation
stateid4 stateid
Definition: nfs41.h:135
struct _FILE_GET_EA_INFORMATION * list
Definition: nfs41.h:159
struct __nfs41_open_state::@29 locks
struct __pnfs_layout_state * layout
Definition: nfs41.h:137
uint32_t share_deny
Definition: nfs41.h:142
uint64_t pnfs_last_offset
Definition: nfs41.h:143
struct list_entry client_entry
Definition: nfs41.h:138
nfs41_path_fh parent
Definition: nfs41.h:129
bool_t reclaim
Definition: nfs41.h:147
uint32_t counter
Definition: nfs41.h:154
uint32_t index
Definition: nfs41.h:160
uint32_t wsize
Definition: nfs41.h:278
CRITICAL_SECTION lock
Definition: nfs41.h:276
uint32_t gid
Definition: nfs41.h:282
uint32_t uid
Definition: nfs41.h:281
struct list_entry clients
Definition: nfs41.h:277
client_owner4 client_owner
Definition: nfs41.h:275
uint32_t rsize
Definition: nfs41.h:279
LONG ref_count
Definition: nfs41.h:280
DWORD sec_flavor
Definition: nfs41.h:283
uint32_t uid
Definition: nfs41.h:178
uint32_t gid
Definition: nfs41.h:179
struct __rpc_client * rpc
Definition: nfs41.h:168
multi_addr4 addrs
Definition: nfs41.h:172
SRWLOCK lock
Definition: nfs41.h:169
uint32_t addr_index
Definition: nfs41.h:173
bool_t in_recovery
Definition: nfs41.h:182
HANDLE cond
Definition: nfs41.h:170
bool_t is_valid_session
Definition: nfs41.h:181
uint32_t rsize
Definition: nfs41.h:175
uint32_t wsize
Definition: nfs41.h:174
char server_name[NI_MAXHOST]
Definition: nfs41.h:180
struct __nfs41_client * client
Definition: nfs41.h:171
uint32_t version
Definition: nfs41.h:176
uint32_t sec_flavor
Definition: nfs41.h:177
bool_t needcb
Definition: nfs41.h:183
char scope[NFS4_OPAQUE_LIMIT]
Definition: nfs41.h:80
nfs41_superblock_list superblocks
Definition: nfs41.h:83
struct server_addrs addrs
Definition: nfs41.h:82
char owner[NFS4_OPAQUE_LIMIT]
Definition: nfs41.h:81
struct nfs41_name_cache * name_cache
Definition: nfs41.h:84
LONG ref_count
Definition: nfs41.h:86
struct list_entry entry
Definition: nfs41.h:85
unsigned char session_id[NFS4_SESSIONID_SIZE]
Definition: nfs41.h:257
nfs41_slot_table table
Definition: nfs41.h:261
nfs41_channel_attrs fore_chan_attrs
Definition: nfs41.h:258
bool_t isValidState
Definition: nfs41.h:264
nfs41_cb_session cb_session
Definition: nfs41.h:266
nfs41_client * client
Definition: nfs41.h:256
nfs41_channel_attrs back_chan_attrs
Definition: nfs41.h:259
uint32_t lease_time
Definition: nfs41.h:260
HANDLE renew_thread
Definition: nfs41.h:263
uint32_t flags
Definition: nfs41.h:265
uint32_t highest_used
Definition: nfs41.h:223
uint32_t max_slots
Definition: nfs41.h:222
uint32_t used_slots[NFS41_MAX_NUM_SLOTS]
Definition: nfs41.h:221
ULONGLONG target_delay
Definition: nfs41.h:225
CRITICAL_SECTION lock
Definition: nfs41.h:226
CONDITION_VARIABLE cond
Definition: nfs41.h:227
uint32_t num_used
Definition: nfs41.h:224
uint32_t seq_nums[NFS41_MAX_NUM_SLOTS]
Definition: nfs41.h:220
struct list_entry head
Definition: nfs41.h:69
uint64_t space_avail
Definition: nfs41.h:60
unsigned int symlink_support
Definition: nfs41.h:54
nfstime4 time_delta
Definition: nfs41.h:45
unsigned int layout_types
Definition: nfs41.h:50
unsigned int ea_support
Definition: nfs41.h:55
unsigned int aclsupport
Definition: nfs41.h:51
bitmap4 suppattr_exclcreat
Definition: nfs41.h:42
uint64_t maxread
Definition: nfs41.h:46
struct list_entry entry
Definition: nfs41.h:39
unsigned int case_preserving
Definition: nfs41.h:56
unsigned int case_insensitive
Definition: nfs41.h:57
bitmap4 default_getattr
Definition: nfs41.h:43
bitmap4 supported_attrs
Definition: nfs41.h:41
uint64_t space_total
Definition: nfs41.h:62
unsigned int cansettime
Definition: nfs41.h:52
time_t cache_expiration
Definition: nfs41.h:63
uint64_t maxwrite
Definition: nfs41.h:47
uint64_t space_free
Definition: nfs41.h:61
unsigned int link_support
Definition: nfs41.h:53
SRWLOCK lock
Definition: nfs41.h:65
nfs41_fsid fsid
Definition: nfs41.h:38
Definition: vfat.h:185
Definition: match.c:390
CRITICAL_SECTION lock
Definition: nfs41.h:189
struct list_entry opens
Definition: nfs41.h:187
struct list_entry delegations
Definition: nfs41.h:188
Definition: fci.c:127
Definition: list.h:27
Definition: name.c:39
uint32_t length
Definition: nfs41.h:242
uint32_t next_index
Definition: nfs41.h:75
multi_addr4 addrs
Definition: nfs41.h:74
SRWLOCK lock
Definition: nfs41.h:76
rwlock_t lock
Definition: tcpcore.h:0
#define IN
Definition: typedefs.h:39
uint64_t ULONGLONG
Definition: typedefs.h:67
#define OUT
Definition: typedefs.h:40
static rfbScreenInfoPtr server
Definition: vnc.c:74
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
#define NI_MAXHOST
Definition: ws2def.h:359