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 |
