Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
afs
afs.h
Go to the documentation of this file.
1
/* AFS common types
2
*
3
* Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved.
4
* Written by David Howells (
[email protected]
)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version
9
* 2 of the License, or (at your option) any later version.
10
*/
11
12
#ifndef AFS_H
13
#define AFS_H
14
15
#include <linux/in.h>
16
17
#define AFS_MAXCELLNAME 64
/* maximum length of a cell name */
18
#define AFS_MAXVOLNAME 64
/* maximum length of a volume name */
19
#define AFSNAMEMAX 256
/* maximum length of a filename plus NUL */
20
#define AFSPATHMAX 1024
/* maximum length of a pathname plus NUL */
21
#define AFSOPAQUEMAX 1024
/* maximum length of an opaque field */
22
23
typedef
unsigned
afs_volid_t
;
24
typedef
unsigned
afs_vnodeid_t
;
25
typedef
unsigned
long
long
afs_dataversion_t
;
26
27
typedef
enum
{
28
AFSVL_RWVOL
,
/* read/write volume */
29
AFSVL_ROVOL
,
/* read-only volume */
30
AFSVL_BACKVOL
,
/* backup volume */
31
}
__attribute__
((packed)) afs_voltype_t;
32
33
typedef enum {
34
AFS_FTYPE_INVALID
= 0,
35
AFS_FTYPE_FILE
= 1,
36
AFS_FTYPE_DIR
= 2,
37
AFS_FTYPE_SYMLINK
= 3,
38
}
afs_file_type_t
;
39
40
typedef
enum
{
41
AFS_LOCK_READ
= 0,
/* read lock request */
42
AFS_LOCK_WRITE
= 1,
/* write lock request */
43
}
afs_lock_type_t
;
44
45
#define AFS_LOCKWAIT (5 * 60)
/* time until a lock times out (seconds) */
46
47
/*
48
* AFS file identifier
49
*/
50
struct
afs_fid
{
51
afs_volid_t
vid
;
/* volume ID */
52
afs_vnodeid_t
vnode
;
/* file index within volume */
53
unsigned
unique
;
/* unique ID number (file index version) */
54
};
55
56
/*
57
* AFS callback notification
58
*/
59
typedef
enum
{
60
AFSCM_CB_UNTYPED
= 0,
/* no type set on CB break */
61
AFSCM_CB_EXCLUSIVE
= 1,
/* CB exclusive to CM [not implemented] */
62
AFSCM_CB_SHARED
= 2,
/* CB shared by other CM's */
63
AFSCM_CB_DROPPED
= 3,
/* CB promise cancelled by file server */
64
}
afs_callback_type_t
;
65
66
struct
afs_callback
{
67
struct
afs_fid
fid
;
/* file identifier */
68
unsigned
version
;
/* callback version */
69
unsigned
expiry
;
/* time at which expires */
70
afs_callback_type_t
type
;
/* type of callback */
71
};
72
73
#define AFSCBMAX 50
/* maximum callbacks transferred per bulk op */
74
75
/*
76
* AFS volume information
77
*/
78
struct
afs_volume_info
{
79
afs_volid_t
vid
;
/* volume ID */
80
afs_voltype_t
type
;
/* type of this volume */
81
afs_volid_t
type_vids
[5];
/* volume ID's for possible types for this vol */
82
83
/* list of fileservers serving this volume */
84
size_t
nservers
;
/* number of entries used in servers[] */
85
struct
{
86
struct
in_addr
addr
;
/* fileserver address */
87
}
servers
[8];
88
};
89
90
/*
91
* AFS security ACE access mask
92
*/
93
typedef
u32
afs_access_t
;
94
#define AFS_ACE_READ 0x00000001U
/* - permission to read a file/dir */
95
#define AFS_ACE_WRITE 0x00000002U
/* - permission to write/chmod a file */
96
#define AFS_ACE_INSERT 0x00000004U
/* - permission to create dirent in a dir */
97
#define AFS_ACE_LOOKUP 0x00000008U
/* - permission to lookup a file/dir in a dir */
98
#define AFS_ACE_DELETE 0x00000010U
/* - permission to delete a dirent from a dir */
99
#define AFS_ACE_LOCK 0x00000020U
/* - permission to lock a file */
100
#define AFS_ACE_ADMINISTER 0x00000040U
/* - permission to change ACL */
101
#define AFS_ACE_USER_A 0x01000000U
/* - 'A' user-defined permission */
102
#define AFS_ACE_USER_B 0x02000000U
/* - 'B' user-defined permission */
103
#define AFS_ACE_USER_C 0x04000000U
/* - 'C' user-defined permission */
104
#define AFS_ACE_USER_D 0x08000000U
/* - 'D' user-defined permission */
105
#define AFS_ACE_USER_E 0x10000000U
/* - 'E' user-defined permission */
106
#define AFS_ACE_USER_F 0x20000000U
/* - 'F' user-defined permission */
107
#define AFS_ACE_USER_G 0x40000000U
/* - 'G' user-defined permission */
108
#define AFS_ACE_USER_H 0x80000000U
/* - 'H' user-defined permission */
109
110
/*
111
* AFS file status information
112
*/
113
struct
afs_file_status
{
114
unsigned
if_version
;
/* interface version */
115
#define AFS_FSTATUS_VERSION 1
116
117
afs_file_type_t
type
;
/* file type */
118
unsigned
nlink
;
/* link count */
119
u64
size
;
/* file size */
120
afs_dataversion_t
data_version
;
/* current data version */
121
u32
author
;
/* author ID */
122
u32
owner
;
/* owner ID */
123
u32
group
;
/* group ID */
124
afs_access_t
caller_access
;
/* access rights for authenticated caller */
125
afs_access_t
anon_access
;
/* access rights for unauthenticated caller */
126
umode_t
mode
;
/* UNIX mode */
127
struct
afs_fid
parent
;
/* parent dir ID for non-dirs only */
128
time_t
mtime_client
;
/* last time client changed data */
129
time_t
mtime_server
;
/* last time server changed data */
130
s32
lock_count
;
/* file lock count (0=UNLK -1=WRLCK +ve=#RDLCK */
131
};
132
133
/*
134
* AFS file status change request
135
*/
136
struct
afs_store_status
{
137
u32
mask
;
/* which bits of the struct are set */
138
u32
mtime_client
;
/* last time client changed data */
139
u32
owner
;
/* owner ID */
140
u32
group
;
/* group ID */
141
umode_t
mode
;
/* UNIX mode */
142
};
143
144
#define AFS_SET_MTIME 0x01
/* set the mtime */
145
#define AFS_SET_OWNER 0x02
/* set the owner ID */
146
#define AFS_SET_GROUP 0x04
/* set the group ID (unsupported?) */
147
#define AFS_SET_MODE 0x08
/* set the UNIX mode */
148
#define AFS_SET_SEG_SIZE 0x10
/* set the segment size (unsupported) */
149
150
/*
151
* AFS volume synchronisation information
152
*/
153
struct
afs_volsync
{
154
time_t
creation
;
/* volume creation time */
155
};
156
157
/*
158
* AFS volume status record
159
*/
160
struct
afs_volume_status
{
161
u32
vid
;
/* volume ID */
162
u32
parent_id
;
/* parent volume ID */
163
u8
online
;
/* true if volume currently online and available */
164
u8
in_service
;
/* true if volume currently in service */
165
u8
blessed
;
/* same as in_service */
166
u8
needs_salvage
;
/* true if consistency checking required */
167
u32
type
;
/* volume type (afs_voltype_t) */
168
u32
min_quota
;
/* minimum space set aside (blocks) */
169
u32
max_quota
;
/* maximum space this volume may occupy (blocks) */
170
u32
blocks_in_use
;
/* space this volume currently occupies (blocks) */
171
u32
part_blocks_avail
;
/* space available in volume's partition */
172
u32
part_max_blocks
;
/* size of volume's partition */
173
};
174
175
#define AFS_BLOCK_SIZE 1024
176
177
#endif
/* AFS_H */
Generated on Thu Jan 10 2013 14:44:50 for Linux Kernel by
1.8.2