summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-10-22 19:20:46 -0700
committerSage Weil <sage@inktank.com>2013-10-22 19:40:50 -0700
commit0194baddc8ac620eb491cdb03d1a19ba53669e24 (patch)
tree88080033886e437af38112008b119631718a3900
parent79f7a1ed2a942bee1781fe16e607b5e873cbcbe3 (diff)
downloadceph-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.h13
-rw-r--r--src/osd/ReplicatedPG.cc1
-rw-r--r--src/osd/osd_types.cc35
-rw-r--r--src/osd/osd_types.h7
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
*