diff options
author | Sage Weil <sage@inktank.com> | 2013-10-22 19:20:46 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-10-22 19:40:50 -0700 |
commit | 0194baddc8ac620eb491cdb03d1a19ba53669e24 (patch) | |
tree | 88080033886e437af38112008b119631718a3900 | |
parent | 79f7a1ed2a942bee1781fe16e607b5e873cbcbe3 (diff) | |
download | ceph-0194baddc8ac620eb491cdb03d1a19ba53669e24.tar.gz |
osd/osd_types: introduce helper for osd op flags -> string conversion
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/messages/MOSDOp.h | 13 | ||||
-rw-r--r-- | src/osd/ReplicatedPG.cc | 1 | ||||
-rw-r--r-- | src/osd/osd_types.cc | 35 | ||||
-rw-r--r-- | src/osd/osd_types.h | 7 |
4 files changed, 44 insertions, 12 deletions
diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h index 11c8bd95f6f..32408bebeed 100644 --- a/src/messages/MOSDOp.h +++ b/src/messages/MOSDOp.h @@ -365,18 +365,7 @@ struct ceph_osd_request_head { out << " RETRY=" << get_retry_attempt(); if (get_snap_seq()) out << " snapc " << get_snap_seq() << "=" << snaps; - if (get_flags() & CEPH_OSD_FLAG_ORDERSNAP) - out << " ordersnap"; - if (get_flags() & CEPH_OSD_FLAG_BALANCE_READS) - out << " balance_reads"; - if (get_flags() & CEPH_OSD_FLAG_PARALLELEXEC) - out << " parallelexec"; - if (get_flags() & CEPH_OSD_FLAG_LOCALIZE_READS) - out << " localize_reads"; - if (get_flags() & CEPH_OSD_FLAG_RWORDERED) - out << " rwordered"; - if (get_flags() & CEPH_OSD_FLAG_IGNORE_OVERLAY) - out << " ignore_overlay"; + out << " " << ceph_osd_flag_string(get_flags()); out << " e" << osdmap_epoch; out << ")"; } diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 02c0e0cee9f..a055271afbb 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -935,6 +935,7 @@ void ReplicatedPG::do_op(OpRequestRef op) << (op->may_write() ? " may_write" : "") << (op->may_read() ? " may_read" : "") << " -> " << (write_ordered ? "write-ordered" : "read-ordered") + << " flags " << ceph_osd_flag_string(m->get_flags()) << dendl; hobject_t head(m->get_oid(), m->get_object_locator().key, diff --git a/src/osd/osd_types.cc b/src/osd/osd_types.cc index ef8c498bb74..66fc9efc6a6 100644 --- a/src/osd/osd_types.cc +++ b/src/osd/osd_types.cc @@ -20,6 +20,41 @@ extern "C" { #include "PG.h" #include "OSDMap.h" +const char *ceph_osd_flag_name(unsigned flag) +{ + switch (flag) { + case CEPH_OSD_FLAG_ACK: return "ack"; + case CEPH_OSD_FLAG_ONNVRAM: return "onnvram"; + case CEPH_OSD_FLAG_ONDISK: return "ondisk"; + case CEPH_OSD_FLAG_RETRY: return "retry"; + case CEPH_OSD_FLAG_READ: return "read"; + case CEPH_OSD_FLAG_WRITE: return "write"; + case CEPH_OSD_FLAG_ORDERSNAP: return "ordersnap"; + case CEPH_OSD_FLAG_PGOP: return "pgop"; + case CEPH_OSD_FLAG_EXEC: return "exec"; + case CEPH_OSD_FLAG_EXEC_PUBLIC: return "exec_public"; + case CEPH_OSD_FLAG_LOCALIZE_READS: return "localize_reads"; + case CEPH_OSD_FLAG_RWORDERED: return "rwordered"; + case CEPH_OSD_FLAG_IGNORE_OVERLAY: return "ignore_overlay"; + default: return "???"; + } +} + +string ceph_osd_flag_string(unsigned flags) +{ + string s; + for (unsigned i=0; i<32; ++i) { + if (flags & (1u<<i)) { + if (s.length()) + s += "+"; + s += ceph_osd_flag_name(1u << i); + } + } + if (s.length()) + return s; + return string("-"); +} + // -- osd_reqid_t -- void osd_reqid_t::encode(bufferlist &bl) const { diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 59c5f175f86..03e98ec3f29 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -52,6 +52,13 @@ typedef hobject_t collection_list_handle_t; typedef uint8_t shard_id_t; + +/// convert a single CPEH_OSD_FLAG_* to a string +const char *ceph_osd_flag_name(unsigned flag); + +/// convert CEPH_OSD_FLAG_* op flags to a string +string ceph_osd_flag_string(unsigned flags); + /** * osd request identifier * |