diff options
author | Alex Elder <elder@inktank.com> | 2013-02-15 12:42:30 -0500 |
---|---|---|
committer | Alex Elder <elder@inktank.com> | 2013-02-18 13:20:08 -0500 |
commit | 0315a7770983bbe69211efed1aaee08324acd54c (patch) | |
tree | a0cc6d00660c7ec65c23979ab603891865a8d1c7 /include/linux/ceph | |
parent | 2d2f522699fe8b827087941eb31b9a12cf465f17 (diff) |
libceph: update rados.h
Update most of "include/linux/ceph/rados.h" to match its user space
counterpart in "src/include/rados.h" in the ceph tree.
Almost everything that has changed is either:
- added or revised comments
- added definitions (therefore no real effect on existing code)
- defining the same value a different way (e.g., "1 << 0" vs "1")
The only exceptions are:
- The declaration of ceph_osd_state_name() was excluded; that
will be inserted in the next patch.
- ceph_osd_op_mode_read() and ceph_osd_op_mode_modify() are
defined differently, but they were never used in the kernel
- CEPH_OSD_FLAG_PEERSTAT is now CEPH_OSD_FLAG_PEERSTAT_OLD, but
that was never used in the kernel
Anything that was present in this file but not in its user space
counterpart was left intact here. I left the definitions of
EOLDSNAPC and EBLACKLISTED using numerical values here; I'm
not sure the right way to go with those.
This and the next two commits resolve:
http://tracker.ceph.com/issues/4164
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Josh Durgin <josh.durgin@inktank.com>
Diffstat (limited to 'include/linux/ceph')
-rw-r--r-- | include/linux/ceph/rados.h | 91 |
1 files changed, 71 insertions, 20 deletions
diff --git a/include/linux/ceph/rados.h b/include/linux/ceph/rados.h index 2c04afeead1c..9c3b4aaf516b 100644 --- a/include/linux/ceph/rados.h +++ b/include/linux/ceph/rados.h | |||
@@ -145,8 +145,10 @@ struct ceph_eversion { | |||
145 | */ | 145 | */ |
146 | 146 | ||
147 | /* status bits */ | 147 | /* status bits */ |
148 | #define CEPH_OSD_EXISTS 1 | 148 | #define CEPH_OSD_EXISTS (1<<0) |
149 | #define CEPH_OSD_UP 2 | 149 | #define CEPH_OSD_UP (1<<1) |
150 | #define CEPH_OSD_AUTOOUT (1<<2) /* osd was automatically marked out */ | ||
151 | #define CEPH_OSD_NEW (1<<3) /* osd is new, never marked in */ | ||
150 | 152 | ||
151 | /* osd weights. fixed point value: 0x10000 == 1.0 ("in"), 0 == "out" */ | 153 | /* osd weights. fixed point value: 0x10000 == 1.0 ("in"), 0 == "out" */ |
152 | #define CEPH_OSD_IN 0x10000 | 154 | #define CEPH_OSD_IN 0x10000 |
@@ -161,9 +163,25 @@ struct ceph_eversion { | |||
161 | #define CEPH_OSDMAP_PAUSERD (1<<2) /* pause all reads */ | 163 | #define CEPH_OSDMAP_PAUSERD (1<<2) /* pause all reads */ |
162 | #define CEPH_OSDMAP_PAUSEWR (1<<3) /* pause all writes */ | 164 | #define CEPH_OSDMAP_PAUSEWR (1<<3) /* pause all writes */ |
163 | #define CEPH_OSDMAP_PAUSEREC (1<<4) /* pause recovery */ | 165 | #define CEPH_OSDMAP_PAUSEREC (1<<4) /* pause recovery */ |
166 | #define CEPH_OSDMAP_NOUP (1<<5) /* block osd boot */ | ||
167 | #define CEPH_OSDMAP_NODOWN (1<<6) /* block osd mark-down/failure */ | ||
168 | #define CEPH_OSDMAP_NOOUT (1<<7) /* block osd auto mark-out */ | ||
169 | #define CEPH_OSDMAP_NOIN (1<<8) /* block osd auto mark-in */ | ||
170 | #define CEPH_OSDMAP_NOBACKFILL (1<<9) /* block osd backfill */ | ||
171 | #define CEPH_OSDMAP_NORECOVER (1<<10) /* block osd recovery and backfill */ | ||
172 | |||
173 | /* | ||
174 | * The error code to return when an OSD can't handle a write | ||
175 | * because it is too large. | ||
176 | */ | ||
177 | #define OSD_WRITETOOBIG EMSGSIZE | ||
164 | 178 | ||
165 | /* | 179 | /* |
166 | * osd ops | 180 | * osd ops |
181 | * | ||
182 | * WARNING: do not use these op codes directly. Use the helpers | ||
183 | * defined below instead. In certain cases, op code behavior was | ||
184 | * redefined, resulting in special-cases in the helpers. | ||
167 | */ | 185 | */ |
168 | #define CEPH_OSD_OP_MODE 0xf000 | 186 | #define CEPH_OSD_OP_MODE 0xf000 |
169 | #define CEPH_OSD_OP_MODE_RD 0x1000 | 187 | #define CEPH_OSD_OP_MODE_RD 0x1000 |
@@ -177,6 +195,7 @@ struct ceph_eversion { | |||
177 | #define CEPH_OSD_OP_TYPE_ATTR 0x0300 | 195 | #define CEPH_OSD_OP_TYPE_ATTR 0x0300 |
178 | #define CEPH_OSD_OP_TYPE_EXEC 0x0400 | 196 | #define CEPH_OSD_OP_TYPE_EXEC 0x0400 |
179 | #define CEPH_OSD_OP_TYPE_PG 0x0500 | 197 | #define CEPH_OSD_OP_TYPE_PG 0x0500 |
198 | #define CEPH_OSD_OP_TYPE_MULTI 0x0600 /* multiobject */ | ||
180 | 199 | ||
181 | enum { | 200 | enum { |
182 | /** data **/ | 201 | /** data **/ |
@@ -217,6 +236,23 @@ enum { | |||
217 | 236 | ||
218 | CEPH_OSD_OP_WATCH = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 15, | 237 | CEPH_OSD_OP_WATCH = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 15, |
219 | 238 | ||
239 | /* omap */ | ||
240 | CEPH_OSD_OP_OMAPGETKEYS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 17, | ||
241 | CEPH_OSD_OP_OMAPGETVALS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 18, | ||
242 | CEPH_OSD_OP_OMAPGETHEADER = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 19, | ||
243 | CEPH_OSD_OP_OMAPGETVALSBYKEYS = | ||
244 | CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 20, | ||
245 | CEPH_OSD_OP_OMAPSETVALS = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 21, | ||
246 | CEPH_OSD_OP_OMAPSETHEADER = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 22, | ||
247 | CEPH_OSD_OP_OMAPCLEAR = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 23, | ||
248 | CEPH_OSD_OP_OMAPRMKEYS = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 24, | ||
249 | CEPH_OSD_OP_OMAP_CMP = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 25, | ||
250 | |||
251 | /** multi **/ | ||
252 | CEPH_OSD_OP_CLONERANGE = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_MULTI | 1, | ||
253 | CEPH_OSD_OP_ASSERT_SRC_VERSION = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_MULTI | 2, | ||
254 | CEPH_OSD_OP_SRC_CMPXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_MULTI | 3, | ||
255 | |||
220 | /** attrs **/ | 256 | /** attrs **/ |
221 | /* read */ | 257 | /* read */ |
222 | CEPH_OSD_OP_GETXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 1, | 258 | CEPH_OSD_OP_GETXATTR = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_ATTR | 1, |
@@ -238,6 +274,7 @@ enum { | |||
238 | CEPH_OSD_OP_SCRUB_RESERVE = CEPH_OSD_OP_MODE_SUB | 6, | 274 | CEPH_OSD_OP_SCRUB_RESERVE = CEPH_OSD_OP_MODE_SUB | 6, |
239 | CEPH_OSD_OP_SCRUB_UNRESERVE = CEPH_OSD_OP_MODE_SUB | 7, | 275 | CEPH_OSD_OP_SCRUB_UNRESERVE = CEPH_OSD_OP_MODE_SUB | 7, |
240 | CEPH_OSD_OP_SCRUB_STOP = CEPH_OSD_OP_MODE_SUB | 8, | 276 | CEPH_OSD_OP_SCRUB_STOP = CEPH_OSD_OP_MODE_SUB | 8, |
277 | CEPH_OSD_OP_SCRUB_MAP = CEPH_OSD_OP_MODE_SUB | 9, | ||
241 | 278 | ||
242 | /** lock **/ | 279 | /** lock **/ |
243 | CEPH_OSD_OP_WRLOCK = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_LOCK | 1, | 280 | CEPH_OSD_OP_WRLOCK = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_LOCK | 1, |
@@ -248,10 +285,12 @@ enum { | |||
248 | CEPH_OSD_OP_DNLOCK = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_LOCK | 6, | 285 | CEPH_OSD_OP_DNLOCK = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_LOCK | 6, |
249 | 286 | ||
250 | /** exec **/ | 287 | /** exec **/ |
288 | /* note: the RD bit here is wrong; see special-case below in helper */ | ||
251 | CEPH_OSD_OP_CALL = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_EXEC | 1, | 289 | CEPH_OSD_OP_CALL = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_EXEC | 1, |
252 | 290 | ||
253 | /** pg **/ | 291 | /** pg **/ |
254 | CEPH_OSD_OP_PGLS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_PG | 1, | 292 | CEPH_OSD_OP_PGLS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_PG | 1, |
293 | CEPH_OSD_OP_PGLS_FILTER = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_PG | 2, | ||
255 | }; | 294 | }; |
256 | 295 | ||
257 | static inline int ceph_osd_op_type_lock(int op) | 296 | static inline int ceph_osd_op_type_lock(int op) |
@@ -274,6 +313,10 @@ static inline int ceph_osd_op_type_pg(int op) | |||
274 | { | 313 | { |
275 | return (op & CEPH_OSD_OP_TYPE) == CEPH_OSD_OP_TYPE_PG; | 314 | return (op & CEPH_OSD_OP_TYPE) == CEPH_OSD_OP_TYPE_PG; |
276 | } | 315 | } |
316 | static inline int ceph_osd_op_type_multi(int op) | ||
317 | { | ||
318 | return (op & CEPH_OSD_OP_TYPE) == CEPH_OSD_OP_TYPE_MULTI; | ||
319 | } | ||
277 | 320 | ||
278 | static inline int ceph_osd_op_mode_subop(int op) | 321 | static inline int ceph_osd_op_mode_subop(int op) |
279 | { | 322 | { |
@@ -281,11 +324,12 @@ static inline int ceph_osd_op_mode_subop(int op) | |||
281 | } | 324 | } |
282 | static inline int ceph_osd_op_mode_read(int op) | 325 | static inline int ceph_osd_op_mode_read(int op) |
283 | { | 326 | { |
284 | return (op & CEPH_OSD_OP_MODE) == CEPH_OSD_OP_MODE_RD; | 327 | return (op & CEPH_OSD_OP_MODE_RD) && |
328 | op != CEPH_OSD_OP_CALL; | ||
285 | } | 329 | } |
286 | static inline int ceph_osd_op_mode_modify(int op) | 330 | static inline int ceph_osd_op_mode_modify(int op) |
287 | { | 331 | { |
288 | return (op & CEPH_OSD_OP_MODE) == CEPH_OSD_OP_MODE_WR; | 332 | return op & CEPH_OSD_OP_MODE_WR; |
289 | } | 333 | } |
290 | 334 | ||
291 | /* | 335 | /* |
@@ -294,34 +338,38 @@ static inline int ceph_osd_op_mode_modify(int op) | |||
294 | */ | 338 | */ |
295 | #define CEPH_OSD_TMAP_HDR 'h' | 339 | #define CEPH_OSD_TMAP_HDR 'h' |
296 | #define CEPH_OSD_TMAP_SET 's' | 340 | #define CEPH_OSD_TMAP_SET 's' |
341 | #define CEPH_OSD_TMAP_CREATE 'c' /* create key */ | ||
297 | #define CEPH_OSD_TMAP_RM 'r' | 342 | #define CEPH_OSD_TMAP_RM 'r' |
343 | #define CEPH_OSD_TMAP_RMSLOPPY 'R' | ||
298 | 344 | ||
299 | extern const char *ceph_osd_op_name(int op); | 345 | extern const char *ceph_osd_op_name(int op); |
300 | 346 | ||
301 | |||
302 | /* | 347 | /* |
303 | * osd op flags | 348 | * osd op flags |
304 | * | 349 | * |
305 | * An op may be READ, WRITE, or READ|WRITE. | 350 | * An op may be READ, WRITE, or READ|WRITE. |
306 | */ | 351 | */ |
307 | enum { | 352 | enum { |
308 | CEPH_OSD_FLAG_ACK = 1, /* want (or is) "ack" ack */ | 353 | CEPH_OSD_FLAG_ACK = 0x0001, /* want (or is) "ack" ack */ |
309 | CEPH_OSD_FLAG_ONNVRAM = 2, /* want (or is) "onnvram" ack */ | 354 | CEPH_OSD_FLAG_ONNVRAM = 0x0002, /* want (or is) "onnvram" ack */ |
310 | CEPH_OSD_FLAG_ONDISK = 4, /* want (or is) "ondisk" ack */ | 355 | CEPH_OSD_FLAG_ONDISK = 0x0004, /* want (or is) "ondisk" ack */ |
311 | CEPH_OSD_FLAG_RETRY = 8, /* resend attempt */ | 356 | CEPH_OSD_FLAG_RETRY = 0x0008, /* resend attempt */ |
312 | CEPH_OSD_FLAG_READ = 16, /* op may read */ | 357 | CEPH_OSD_FLAG_READ = 0x0010, /* op may read */ |
313 | CEPH_OSD_FLAG_WRITE = 32, /* op may write */ | 358 | CEPH_OSD_FLAG_WRITE = 0x0020, /* op may write */ |
314 | CEPH_OSD_FLAG_ORDERSNAP = 64, /* EOLDSNAP if snapc is out of order */ | 359 | CEPH_OSD_FLAG_ORDERSNAP = 0x0040, /* EOLDSNAP if snapc is out of order */ |
315 | CEPH_OSD_FLAG_PEERSTAT = 128, /* msg includes osd_peer_stat */ | 360 | CEPH_OSD_FLAG_PEERSTAT_OLD = 0x0080, /* DEPRECATED msg includes osd_peer_stat */ |
316 | CEPH_OSD_FLAG_BALANCE_READS = 256, | 361 | CEPH_OSD_FLAG_BALANCE_READS = 0x0100, |
317 | CEPH_OSD_FLAG_PARALLELEXEC = 512, /* execute op in parallel */ | 362 | CEPH_OSD_FLAG_PARALLELEXEC = 0x0200, /* execute op in parallel */ |
318 | CEPH_OSD_FLAG_PGOP = 1024, /* pg op, no object */ | 363 | CEPH_OSD_FLAG_PGOP = 0x0400, /* pg op, no object */ |
319 | CEPH_OSD_FLAG_EXEC = 2048, /* op may exec */ | 364 | CEPH_OSD_FLAG_EXEC = 0x0800, /* op may exec */ |
320 | CEPH_OSD_FLAG_EXEC_PUBLIC = 4096, /* op may exec (public) */ | 365 | CEPH_OSD_FLAG_EXEC_PUBLIC = 0x1000, /* DEPRECATED op may exec (public) */ |
366 | CEPH_OSD_FLAG_LOCALIZE_READS = 0x2000, /* read from nearby replica, if any */ | ||
367 | CEPH_OSD_FLAG_RWORDERED = 0x4000, /* order wrt concurrent reads */ | ||
321 | }; | 368 | }; |
322 | 369 | ||
323 | enum { | 370 | enum { |
324 | CEPH_OSD_OP_FLAG_EXCL = 1, /* EXCL object create */ | 371 | CEPH_OSD_OP_FLAG_EXCL = 1, /* EXCL object create */ |
372 | CEPH_OSD_OP_FLAG_FAILOK = 2, /* continue despite failure */ | ||
325 | }; | 373 | }; |
326 | 374 | ||
327 | #define EOLDSNAPC ERESTART /* ORDERSNAP flag set; writer has old snapc*/ | 375 | #define EOLDSNAPC ERESTART /* ORDERSNAP flag set; writer has old snapc*/ |
@@ -381,7 +429,11 @@ struct ceph_osd_op { | |||
381 | __le64 ver; | 429 | __le64 ver; |
382 | __u8 flag; /* 0 = unwatch, 1 = watch */ | 430 | __u8 flag; /* 0 = unwatch, 1 = watch */ |
383 | } __attribute__ ((packed)) watch; | 431 | } __attribute__ ((packed)) watch; |
384 | }; | 432 | struct { |
433 | __le64 offset, length; | ||
434 | __le64 src_offset; | ||
435 | } __attribute__ ((packed)) clonerange; | ||
436 | }; | ||
385 | __le32 payload_len; | 437 | __le32 payload_len; |
386 | } __attribute__ ((packed)); | 438 | } __attribute__ ((packed)); |
387 | 439 | ||
@@ -424,5 +476,4 @@ struct ceph_osd_reply_head { | |||
424 | } __attribute__ ((packed)); | 476 | } __attribute__ ((packed)); |
425 | 477 | ||
426 | 478 | ||
427 | |||
428 | #endif | 479 | #endif |