]> git.proxmox.com Git - ceph.git/blame - ceph/src/common/ceph_strings.cc
import ceph 16.2.7
[ceph.git] / ceph / src / common / ceph_strings.cc
CommitLineData
7c673cae
FG
1/*
2 * Ceph string constants
3 */
9f95a23c 4#include "ceph_strings.h"
7c673cae 5#include "include/types.h"
31f18b77 6#include "include/ceph_features.h"
7c673cae
FG
7
8const char *ceph_entity_type_name(int type)
9{
10 switch (type) {
11 case CEPH_ENTITY_TYPE_MDS: return "mds";
12 case CEPH_ENTITY_TYPE_OSD: return "osd";
13 case CEPH_ENTITY_TYPE_MON: return "mon";
14 case CEPH_ENTITY_TYPE_MGR: return "mgr";
15 case CEPH_ENTITY_TYPE_CLIENT: return "client";
16 case CEPH_ENTITY_TYPE_AUTH: return "auth";
17 default: return "unknown";
18 }
19}
20
11fdf7f2
TL
21const char *ceph_con_mode_name(int con_mode)
22{
23 switch (con_mode) {
24 case CEPH_CON_MODE_UNKNOWN: return "unknown";
25 case CEPH_CON_MODE_CRC: return "crc";
26 case CEPH_CON_MODE_SECURE: return "secure";
27 default: return "???";
28 }
29}
30
7c673cae
FG
31const char *ceph_osd_op_name(int op)
32{
33 switch (op) {
34#define GENERATE_CASE(op, opcode, str) case CEPH_OSD_OP_##op: return (str);
35__CEPH_FORALL_OSD_OPS(GENERATE_CASE)
36#undef GENERATE_CASE
37 default:
38 return "???";
39 }
40}
41
42const char *ceph_osd_state_name(int s)
43{
44 switch (s) {
45 case CEPH_OSD_EXISTS:
46 return "exists";
47 case CEPH_OSD_UP:
48 return "up";
49 case CEPH_OSD_AUTOOUT:
50 return "autoout";
51 case CEPH_OSD_NEW:
52 return "new";
53 case CEPH_OSD_FULL:
54 return "full";
55 case CEPH_OSD_NEARFULL:
56 return "nearfull";
57 case CEPH_OSD_BACKFILLFULL:
58 return "backfillfull";
31f18b77
FG
59 case CEPH_OSD_DESTROYED:
60 return "destroyed";
61 case CEPH_OSD_NOUP:
62 return "noup";
63 case CEPH_OSD_NODOWN:
64 return "nodown";
65 case CEPH_OSD_NOIN:
66 return "noin";
67 case CEPH_OSD_NOOUT:
68 return "noout";
9f95a23c
TL
69 case CEPH_OSD_STOP:
70 return "stop";
7c673cae
FG
71 default:
72 return "???";
31f18b77
FG
73 }
74}
75
76const char *ceph_release_name(int r)
77{
78 switch (r) {
79 case CEPH_RELEASE_ARGONAUT:
80 return "argonaut";
81 case CEPH_RELEASE_BOBTAIL:
82 return "bobtail";
83 case CEPH_RELEASE_CUTTLEFISH:
84 return "cuttlefish";
85 case CEPH_RELEASE_DUMPLING:
86 return "dumpling";
87 case CEPH_RELEASE_EMPEROR:
88 return "emperor";
89 case CEPH_RELEASE_FIREFLY:
90 return "firefly";
91 case CEPH_RELEASE_GIANT:
92 return "giant";
93 case CEPH_RELEASE_HAMMER:
94 return "hammer";
95 case CEPH_RELEASE_INFERNALIS:
96 return "infernalis";
97 case CEPH_RELEASE_JEWEL:
98 return "jewel";
99 case CEPH_RELEASE_KRAKEN:
100 return "kraken";
101 case CEPH_RELEASE_LUMINOUS:
102 return "luminous";
103 case CEPH_RELEASE_MIMIC:
104 return "mimic";
11fdf7f2
TL
105 case CEPH_RELEASE_NAUTILUS:
106 return "nautilus";
9f95a23c
TL
107 case CEPH_RELEASE_OCTOPUS:
108 return "octopus";
f67539c2
TL
109 case CEPH_RELEASE_PACIFIC:
110 return "pacific";
31f18b77 111 default:
11fdf7f2
TL
112 if (r < 0)
113 return "unspecified";
31f18b77
FG
114 return "unknown";
115 }
116}
117
31f18b77
FG
118uint64_t ceph_release_features(int r)
119{
120 uint64_t req = 0;
121
122 req |= CEPH_FEATURE_CRUSH_TUNABLES;
123 if (r <= CEPH_RELEASE_CUTTLEFISH)
124 return req;
125
126 req |= CEPH_FEATURE_CRUSH_TUNABLES2 |
127 CEPH_FEATURE_OSDHASHPSPOOL;
128 if (r <= CEPH_RELEASE_EMPEROR)
129 return req;
130
131 req |= CEPH_FEATURE_CRUSH_TUNABLES3 |
132 CEPH_FEATURE_OSD_PRIMARY_AFFINITY |
133 CEPH_FEATURE_OSD_CACHEPOOL;
134 if (r <= CEPH_RELEASE_GIANT)
135 return req;
136
137 req |= CEPH_FEATURE_CRUSH_V4;
138 if (r <= CEPH_RELEASE_INFERNALIS)
139 return req;
140
141 req |= CEPH_FEATURE_CRUSH_TUNABLES5;
142 if (r <= CEPH_RELEASE_JEWEL)
143 return req;
144
145 req |= CEPH_FEATURE_MSG_ADDR2;
146 if (r <= CEPH_RELEASE_KRAKEN)
147 return req;
148
149 req |= CEPH_FEATUREMASK_CRUSH_CHOOSE_ARGS; // and overlaps
150 if (r <= CEPH_RELEASE_LUMINOUS)
151 return req;
152
153 return req;
154}
155
156/* return oldest/first release that supports these features */
157int ceph_release_from_features(uint64_t features)
158{
159 int r = 1;
160 while (true) {
161 uint64_t need = ceph_release_features(r);
162 if ((need & features) != need ||
163 r == CEPH_RELEASE_MAX) {
164 r--;
165 need = ceph_release_features(r);
166 /* we want the first release that looks like this */
167 while (r > 1 && ceph_release_features(r - 1) == need) {
168 r--;
169 }
170 break;
171 }
172 ++r;
173 }
174 return r;
7c673cae
FG
175}
176
177const char *ceph_osd_watch_op_name(int o)
178{
179 switch (o) {
180 case CEPH_OSD_WATCH_OP_UNWATCH:
181 return "unwatch";
182 case CEPH_OSD_WATCH_OP_WATCH:
183 return "watch";
184 case CEPH_OSD_WATCH_OP_RECONNECT:
185 return "reconnect";
186 case CEPH_OSD_WATCH_OP_PING:
187 return "ping";
188 default:
189 return "???";
190 }
191}
192
193const char *ceph_osd_alloc_hint_flag_name(int f)
194{
195 switch (f) {
196 case CEPH_OSD_ALLOC_HINT_FLAG_SEQUENTIAL_WRITE:
197 return "sequential_write";
198 case CEPH_OSD_ALLOC_HINT_FLAG_RANDOM_WRITE:
199 return "random_write";
200 case CEPH_OSD_ALLOC_HINT_FLAG_SEQUENTIAL_READ:
201 return "sequential_read";
202 case CEPH_OSD_ALLOC_HINT_FLAG_RANDOM_READ:
203 return "random_read";
204 case CEPH_OSD_ALLOC_HINT_FLAG_APPEND_ONLY:
205 return "append_only";
206 case CEPH_OSD_ALLOC_HINT_FLAG_IMMUTABLE:
207 return "immutable";
208 case CEPH_OSD_ALLOC_HINT_FLAG_SHORTLIVED:
209 return "shortlived";
210 case CEPH_OSD_ALLOC_HINT_FLAG_LONGLIVED:
211 return "longlived";
212 case CEPH_OSD_ALLOC_HINT_FLAG_COMPRESSIBLE:
213 return "compressible";
214 case CEPH_OSD_ALLOC_HINT_FLAG_INCOMPRESSIBLE:
215 return "incompressible";
216 default:
217 return "???";
218 }
219}
220
221const char *ceph_mds_state_name(int s)
222{
223 switch (s) {
224 /* down and out */
225 case CEPH_MDS_STATE_DNE: return "down:dne";
226 case CEPH_MDS_STATE_STOPPED: return "down:stopped";
227 case CEPH_MDS_STATE_DAMAGED: return "down:damaged";
228 /* up and out */
229 case CEPH_MDS_STATE_BOOT: return "up:boot";
230 case CEPH_MDS_STATE_STANDBY: return "up:standby";
231 case CEPH_MDS_STATE_STANDBY_REPLAY: return "up:standby-replay";
232 case CEPH_MDS_STATE_REPLAYONCE: return "up:oneshot-replay";
233 case CEPH_MDS_STATE_CREATING: return "up:creating";
234 case CEPH_MDS_STATE_STARTING: return "up:starting";
235 /* up and in */
236 case CEPH_MDS_STATE_REPLAY: return "up:replay";
237 case CEPH_MDS_STATE_RESOLVE: return "up:resolve";
238 case CEPH_MDS_STATE_RECONNECT: return "up:reconnect";
239 case CEPH_MDS_STATE_REJOIN: return "up:rejoin";
240 case CEPH_MDS_STATE_CLIENTREPLAY: return "up:clientreplay";
241 case CEPH_MDS_STATE_ACTIVE: return "up:active";
242 case CEPH_MDS_STATE_STOPPING: return "up:stopping";
11fdf7f2
TL
243 /* misc */
244 case CEPH_MDS_STATE_NULL: return "null";
7c673cae
FG
245 }
246 return "???";
247}
248
249const char *ceph_session_op_name(int op)
250{
251 switch (op) {
252 case CEPH_SESSION_REQUEST_OPEN: return "request_open";
253 case CEPH_SESSION_OPEN: return "open";
254 case CEPH_SESSION_REQUEST_CLOSE: return "request_close";
255 case CEPH_SESSION_CLOSE: return "close";
256 case CEPH_SESSION_REQUEST_RENEWCAPS: return "request_renewcaps";
257 case CEPH_SESSION_RENEWCAPS: return "renewcaps";
258 case CEPH_SESSION_STALE: return "stale";
259 case CEPH_SESSION_RECALL_STATE: return "recall_state";
260 case CEPH_SESSION_FLUSHMSG: return "flushmsg";
261 case CEPH_SESSION_FLUSHMSG_ACK: return "flushmsg_ack";
262 case CEPH_SESSION_FORCE_RO: return "force_ro";
263 case CEPH_SESSION_REJECT: return "reject";
11fdf7f2 264 case CEPH_SESSION_REQUEST_FLUSH_MDLOG: return "request_flushmdlog";
7c673cae
FG
265 }
266 return "???";
267}
268
269const char *ceph_mds_op_name(int op)
270{
271 switch (op) {
272 case CEPH_MDS_OP_LOOKUP: return "lookup";
273 case CEPH_MDS_OP_LOOKUPHASH: return "lookuphash";
274 case CEPH_MDS_OP_LOOKUPPARENT: return "lookupparent";
275 case CEPH_MDS_OP_LOOKUPINO: return "lookupino";
276 case CEPH_MDS_OP_LOOKUPNAME: return "lookupname";
277 case CEPH_MDS_OP_GETATTR: return "getattr";
278 case CEPH_MDS_OP_SETXATTR: return "setxattr";
279 case CEPH_MDS_OP_SETATTR: return "setattr";
280 case CEPH_MDS_OP_RMXATTR: return "rmxattr";
281 case CEPH_MDS_OP_SETLAYOUT: return "setlayou";
282 case CEPH_MDS_OP_SETDIRLAYOUT: return "setdirlayout";
283 case CEPH_MDS_OP_READDIR: return "readdir";
284 case CEPH_MDS_OP_MKNOD: return "mknod";
285 case CEPH_MDS_OP_LINK: return "link";
286 case CEPH_MDS_OP_UNLINK: return "unlink";
287 case CEPH_MDS_OP_RENAME: return "rename";
288 case CEPH_MDS_OP_MKDIR: return "mkdir";
289 case CEPH_MDS_OP_RMDIR: return "rmdir";
290 case CEPH_MDS_OP_SYMLINK: return "symlink";
291 case CEPH_MDS_OP_CREATE: return "create";
292 case CEPH_MDS_OP_OPEN: return "open";
293 case CEPH_MDS_OP_LOOKUPSNAP: return "lookupsnap";
294 case CEPH_MDS_OP_LSSNAP: return "lssnap";
295 case CEPH_MDS_OP_MKSNAP: return "mksnap";
296 case CEPH_MDS_OP_RMSNAP: return "rmsnap";
297 case CEPH_MDS_OP_RENAMESNAP: return "renamesnap";
298 case CEPH_MDS_OP_SETFILELOCK: return "setfilelock";
299 case CEPH_MDS_OP_GETFILELOCK: return "getfilelock";
300 case CEPH_MDS_OP_FRAGMENTDIR: return "fragmentdir";
301 case CEPH_MDS_OP_EXPORTDIR: return "exportdir";
302 case CEPH_MDS_OP_FLUSH: return "flush_path";
303 case CEPH_MDS_OP_ENQUEUE_SCRUB: return "enqueue_scrub";
304 case CEPH_MDS_OP_REPAIR_FRAGSTATS: return "repair_fragstats";
305 case CEPH_MDS_OP_REPAIR_INODESTATS: return "repair_inodestats";
306 }
307 return "???";
308}
309
310const char *ceph_cap_op_name(int op)
311{
312 switch (op) {
313 case CEPH_CAP_OP_GRANT: return "grant";
314 case CEPH_CAP_OP_REVOKE: return "revoke";
315 case CEPH_CAP_OP_TRUNC: return "trunc";
316 case CEPH_CAP_OP_EXPORT: return "export";
317 case CEPH_CAP_OP_IMPORT: return "import";
318 case CEPH_CAP_OP_UPDATE: return "update";
319 case CEPH_CAP_OP_DROP: return "drop";
320 case CEPH_CAP_OP_FLUSH: return "flush";
321 case CEPH_CAP_OP_FLUSH_ACK: return "flush_ack";
322 case CEPH_CAP_OP_FLUSHSNAP: return "flushsnap";
323 case CEPH_CAP_OP_FLUSHSNAP_ACK: return "flushsnap_ack";
324 case CEPH_CAP_OP_RELEASE: return "release";
325 case CEPH_CAP_OP_RENEW: return "renew";
326 }
327 return "???";
328}
329
330const char *ceph_lease_op_name(int o)
331{
332 switch (o) {
333 case CEPH_MDS_LEASE_REVOKE: return "revoke";
334 case CEPH_MDS_LEASE_RELEASE: return "release";
335 case CEPH_MDS_LEASE_RENEW: return "renew";
336 case CEPH_MDS_LEASE_REVOKE_ACK: return "revoke_ack";
337 }
338 return "???";
339}
340
341const char *ceph_snap_op_name(int o)
342{
343 switch (o) {
344 case CEPH_SNAP_OP_UPDATE: return "update";
345 case CEPH_SNAP_OP_CREATE: return "create";
346 case CEPH_SNAP_OP_DESTROY: return "destroy";
347 case CEPH_SNAP_OP_SPLIT: return "split";
348 }
349 return "???";
350}
351
352const char *ceph_watch_event_name(int e)
353{
354 switch (e) {
355 case CEPH_WATCH_EVENT_NOTIFY: return "notify";
356 case CEPH_WATCH_EVENT_NOTIFY_COMPLETE: return "notify_complete";
357 case CEPH_WATCH_EVENT_DISCONNECT: return "disconnect";
358 }
359 return "???";
360}
361
362const char *ceph_pool_op_name(int op)
363{
364 switch (op) {
365 case POOL_OP_CREATE: return "create";
366 case POOL_OP_DELETE: return "delete";
11fdf7f2 367 case POOL_OP_AUID_CHANGE: return "auid change"; // (obsolete)
7c673cae
FG
368 case POOL_OP_CREATE_SNAP: return "create snap";
369 case POOL_OP_DELETE_SNAP: return "delete snap";
370 case POOL_OP_CREATE_UNMANAGED_SNAP: return "create unmanaged snap";
371 case POOL_OP_DELETE_UNMANAGED_SNAP: return "delete unmanaged snap";
372 }
373 return "???";
374}
375
376const char *ceph_osd_backoff_op_name(int op)
377{
378 switch (op) {
379 case CEPH_OSD_BACKOFF_OP_BLOCK: return "block";
380 case CEPH_OSD_BACKOFF_OP_ACK_BLOCK: return "ack-block";
381 case CEPH_OSD_BACKOFF_OP_UNBLOCK: return "unblock";
382 }
383 return "???";
384}