6b13f685e
김민수
BSP 최초 추가
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
#ifndef AFS_H
#define AFS_H
#include <linux/in.h>
#define AFS_MAXCELLNAME 64 /* maximum length of a cell name */
#define AFS_MAXVOLNAME 64 /* maximum length of a volume name */
#define AFSNAMEMAX 256 /* maximum length of a filename plus NUL */
#define AFSPATHMAX 1024 /* maximum length of a pathname plus NUL */
#define AFSOPAQUEMAX 1024 /* maximum length of an opaque field */
typedef unsigned afs_volid_t;
typedef unsigned afs_vnodeid_t;
typedef unsigned long long afs_dataversion_t;
typedef enum {
AFSVL_RWVOL,
AFSVL_ROVOL,
AFSVL_BACKVOL,
} __attribute__((packed)) afs_voltype_t;
typedef enum {
AFS_FTYPE_INVALID = 0,
AFS_FTYPE_FILE = 1,
AFS_FTYPE_DIR = 2,
AFS_FTYPE_SYMLINK = 3,
} afs_file_type_t;
typedef enum {
AFS_LOCK_READ = 0,
AFS_LOCK_WRITE = 1,
} afs_lock_type_t;
#define AFS_LOCKWAIT (5 * 60) /* time until a lock times out (seconds) */
struct afs_fid {
afs_volid_t vid;
afs_vnodeid_t vnode;
unsigned unique;
};
typedef enum {
AFSCM_CB_UNTYPED = 0,
AFSCM_CB_EXCLUSIVE = 1,
AFSCM_CB_SHARED = 2,
AFSCM_CB_DROPPED = 3,
} afs_callback_type_t;
struct afs_callback {
struct afs_fid fid;
unsigned version;
unsigned expiry;
afs_callback_type_t type;
};
#define AFSCBMAX 50 /* maximum callbacks transferred per bulk op */
struct afs_volume_info {
afs_volid_t vid;
afs_voltype_t type;
afs_volid_t type_vids[5];
size_t nservers;
struct {
struct in_addr addr;
} servers[8];
};
typedef u32 afs_access_t;
#define AFS_ACE_READ 0x00000001U /* - permission to read a file/dir */
#define AFS_ACE_WRITE 0x00000002U /* - permission to write/chmod a file */
#define AFS_ACE_INSERT 0x00000004U /* - permission to create dirent in a dir */
#define AFS_ACE_LOOKUP 0x00000008U /* - permission to lookup a file/dir in a dir */
#define AFS_ACE_DELETE 0x00000010U /* - permission to delete a dirent from a dir */
#define AFS_ACE_LOCK 0x00000020U /* - permission to lock a file */
#define AFS_ACE_ADMINISTER 0x00000040U /* - permission to change ACL */
#define AFS_ACE_USER_A 0x01000000U /* - 'A' user-defined permission */
#define AFS_ACE_USER_B 0x02000000U /* - 'B' user-defined permission */
#define AFS_ACE_USER_C 0x04000000U /* - 'C' user-defined permission */
#define AFS_ACE_USER_D 0x08000000U /* - 'D' user-defined permission */
#define AFS_ACE_USER_E 0x10000000U /* - 'E' user-defined permission */
#define AFS_ACE_USER_F 0x20000000U /* - 'F' user-defined permission */
#define AFS_ACE_USER_G 0x40000000U /* - 'G' user-defined permission */
#define AFS_ACE_USER_H 0x80000000U /* - 'H' user-defined permission */
struct afs_file_status {
unsigned if_version;
#define AFS_FSTATUS_VERSION 1
afs_file_type_t type;
unsigned nlink;
u64 size;
afs_dataversion_t data_version;
u32 author;
kuid_t owner;
kgid_t group;
afs_access_t caller_access;
afs_access_t anon_access;
umode_t mode;
struct afs_fid parent;
time_t mtime_client;
time_t mtime_server;
s32 lock_count;
};
#define AFS_SET_MTIME 0x01 /* set the mtime */
#define AFS_SET_OWNER 0x02 /* set the owner ID */
#define AFS_SET_GROUP 0x04 /* set the group ID (unsupported?) */
#define AFS_SET_MODE 0x08 /* set the UNIX mode */
#define AFS_SET_SEG_SIZE 0x10 /* set the segment size (unsupported) */
struct afs_volsync {
time_t creation;
};
struct afs_volume_status {
u32 vid;
u32 parent_id;
u8 online;
u8 in_service;
u8 blessed;
u8 needs_salvage;
u32 type;
u32 min_quota;
u32 max_quota;
u32 blocks_in_use;
u32 part_blocks_avail;
u32 part_max_blocks;
};
#define AFS_BLOCK_SIZE 1024
#endif /* AFS_H */
|