aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/ceph
diff options
context:
space:
mode:
authorAlex Elder <elder@inktank.com>2013-02-15 12:42:30 -0500
committerAlex Elder <elder@inktank.com>2013-02-18 13:20:08 -0500
commit0315a7770983bbe69211efed1aaee08324acd54c (patch)
treea0cc6d00660c7ec65c23979ab603891865a8d1c7 /include/linux/ceph
parent2d2f522699fe8b827087941eb31b9a12cf465f17 (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.h91
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
181enum { 200enum {
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
257static inline int ceph_osd_op_type_lock(int op) 296static 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}
316static 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
278static inline int ceph_osd_op_mode_subop(int op) 321static 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}
282static inline int ceph_osd_op_mode_read(int op) 325static 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}
286static inline int ceph_osd_op_mode_modify(int op) 330static 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
299extern const char *ceph_osd_op_name(int op); 345extern 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 */
307enum { 352enum {
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
323enum { 370enum {
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