-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcs.x
More file actions
255 lines (208 loc) · 4.27 KB
/
cs.x
File metadata and controls
255 lines (208 loc) · 4.27 KB
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
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
const PATH_BUF = 1024; /* path name length */
const DIR_BUF = 30; /* 8192/sizeof(dnfs_dir) items*/
const CHUNK_BUF = 1024; /* max chunk size, support 64G file size */
const AUTH_BUF = 256; /* for authentication */
/*
* dnfs file stat struct
* this struct will be stored in metadata server
* it must be platform independent
*/
struct dnfs_stat {
uint64_t s_ino;
uint32_t s_mode;
uint16_t s_chunks;
uint16_t s_copies;
uint64_t s_nlink;
uint32_t s_uid;
uint32_t s_gid;
uint64_t s_rdev;
uint64_t s_size;
uint64_t s_blocks;
uint64_t s_atime;
uint64_t s_mtime;
uint64_t s_ctime;
};
/*
* identify a strage chunk and it's copy
*/
struct chunk_info {
uint32_t ip;
uint32_t bip;
};
/*
* dnfs directory struct
*/
struct dnfs_dir {
uint64_t d_ino;
uint8_t d_type;
opaque d_name[PATH_BUF];
};
/*
* structs for client-server rpc program
*/
struct cs_getattr_in {
string path<PATH_BUF>;
};
struct cs_getattr_out {
dnfs_stat st;
int err;
};
struct cs_access_in {
string path<PATH_BUF>;
int mode;
};
struct cs_access_out {
int err;
};
struct cs_mkdir_in {
string path<PATH_BUF>;
unsigned int mode;
};
struct cs_mkdir_out {
int err;
};
struct cs_rmdir_in {
string path<PATH_BUF>;
};
struct cs_rmdir_out {
int err;
};
struct cs_readdir_in
{
string path<PATH_BUF>;
unsigned long dp;
};
struct cs_readdir_out {
dnfs_dir dirs<DIR_BUF>;
unsigned long dp;
int err;
};
struct cs_mknod_in {
string path<PATH_BUF>;
unsigned int mode;
};
struct cs_mknod_out {
int err;
};
struct cs_setwflag_in {
string path<PATH_BUF>;
int promote;
};
struct cs_setwflag_out {
int err;
};
struct cs_open_in {
string path<PATH_BUF>;
unsigned int mode;
};
struct cs_open_out {
uint64_t ino;
uint64_t size;
chunk_info chunks<CHUNK_BUF>;
int err;
};
struct cs_newchunk_in {
string path<PATH_BUF>;
};
struct cs_newchunk_out {
chunk_info chunk;
int err;
};
struct cs_release_in {
string path<PATH_BUF>;
uint64_t size;
};
struct cs_release_out {
int err;
};
struct cs_truncate_in {
string path<PATH_BUF>;
uint64_t size;
};
struct cs_truncate_out {
int err;
};
struct cs_getlist_in {
string path<PATH_BUF>;
};
struct cs_getlist_out {
uint64_t ino;
chunk_info chunks<CHUNK_BUF>;
int err;
};
struct cs_unlink_in {
string path<PATH_BUF>;
};
struct cs_unlink_out {
int err;
};
struct cs_chown_in {
string path<PATH_BUF>;
unsigned int owner;
unsigned int group;
};
struct cs_chown_out {
int err;
};
struct cs_chmod_in {
string path<PATH_BUF>;
unsigned int mode;
};
struct cs_chmod_out {
int err;
};
struct cs_statfs_in {
string path<PATH_BUF>;
};
struct cs_statfs_out {
uint32_t f_blocks;
uint32_t f_bavail;
uint32_t f_bsize;
int err;
};
struct cs_auth_in {
string user<AUTH_BUF>;
string passwd<AUTH_BUF>;
};
struct cs_auth_out {
int err;
};
/*
* client server program definition
*/
program CS_PROG {
version CS_VERS {
cs_getattr_out cs_getattr(cs_getattr_in) = 1;
cs_access_out cs_access(cs_access_in) = 2;
cs_mkdir_out cs_mkdir(cs_mkdir_in) = 3;
cs_rmdir_out cs_rmdir(cs_rmdir_in) = 4;
cs_readdir_out cs_readdir(cs_readdir_in) = 5;
cs_mknod_out cs_mknod(cs_mknod_in) = 6;
cs_open_out cs_open(cs_open_in) = 7;
cs_newchunk_out cs_newchunk(cs_newchunk_in) = 8;
cs_release_out cs_release(cs_release_in) = 9;
cs_unlink_out cs_unlink(cs_unlink_in) = 10;
cs_truncate_out cs_truncate(cs_truncate_in) = 11;
cs_chown_out cs_chown(cs_chown_in) = 12;
cs_chmod_out cs_chmod(cs_chmod_in) = 13;
cs_statfs_out cs_statfs(cs_statfs_in) = 14;
cs_getlist_out cs_getlist(cs_getlist_in) = 15;
cs_setwflag_out cs_setwflag(cs_setwflag_in) = 16;
cs_auth_out cs_auth(cs_auth_in) = 17;
} = 1;
} = 0x31230001;
/*
* structs for osd-server rpc program
*/
struct os_heart_in {
uint32_t total;
uint32_t avail;
};
struct os_heart_out {
int err;
};
program OS_PROG {
version OS_VERS {
os_heart_out os_heart(os_heart_in) = 1;
} = 1;
} = 0x31230003;