From 6f4ec6abcf14fcd70960d439484c3d7955cc3b6c Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Fri, 13 Jul 2018 02:12:38 +0200 Subject: [PATCH] osd: clean up PrimaryLogPG::log_op_stats. Signed-off-by: Radoslaw Zarzynski --- src/osd/OpRequest.cc | 16 ++++++++-------- src/osd/OpRequest.h | 16 ++++++++-------- src/osd/PrimaryLogPG.cc | 27 ++++++++++++--------------- src/osd/PrimaryLogPG.h | 2 +- 4 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index 51d54c6ad5f..3784453da67 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -79,29 +79,29 @@ void OpRequest::_unregistered() { request->set_connection(nullptr); } -bool OpRequest::check_rmw(int flag) { +bool OpRequest::check_rmw(int flag) const { assert(rmw_flags != 0); return rmw_flags & flag; } -bool OpRequest::may_read() { +bool OpRequest::may_read() const { return need_read_cap() || check_rmw(CEPH_OSD_RMW_FLAG_CLASS_READ); } -bool OpRequest::may_write() { +bool OpRequest::may_write() const { return need_write_cap() || check_rmw(CEPH_OSD_RMW_FLAG_CLASS_WRITE); } -bool OpRequest::may_cache() { return check_rmw(CEPH_OSD_RMW_FLAG_CACHE); } -bool OpRequest::rwordered_forced() { +bool OpRequest::may_cache() const { return check_rmw(CEPH_OSD_RMW_FLAG_CACHE); } +bool OpRequest::rwordered_forced() const { return check_rmw(CEPH_OSD_RMW_FLAG_RWORDERED); } -bool OpRequest::rwordered() { +bool OpRequest::rwordered() const { return may_write() || may_cache() || rwordered_forced(); } bool OpRequest::includes_pg_op() { return check_rmw(CEPH_OSD_RMW_FLAG_PGOP); } -bool OpRequest::need_read_cap() { +bool OpRequest::need_read_cap() const { return check_rmw(CEPH_OSD_RMW_FLAG_READ); } -bool OpRequest::need_write_cap() { +bool OpRequest::need_write_cap() const { return check_rmw(CEPH_OSD_RMW_FLAG_WRITE); } bool OpRequest::need_promote() { diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index 5281a3ba981..5bfb730f5d0 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -27,15 +27,15 @@ struct OpRequest : public TrackedOp { // rmw flags int rmw_flags; - bool check_rmw(int flag); - bool may_read(); - bool may_write(); - bool may_cache(); - bool rwordered_forced(); - bool rwordered(); + bool check_rmw(int flag) const ; + bool may_read() const; + bool may_write() const; + bool may_cache() const; + bool rwordered_forced() const; + bool rwordered() const; bool includes_pg_op(); - bool need_read_cap(); - bool need_write_cap(); + bool need_read_cap() const; + bool need_write_cap() const; bool need_promote(); bool need_skip_handle_cache(); bool need_skip_promote(); diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index cf672837d31..7ffaea0145c 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -3981,8 +3981,7 @@ void PrimaryLogPG::execute_ctx(OpContext *ctx) ctx->register_on_commit( [m, ctx, this](){ if (ctx->op) - log_op_stats( - ctx); + log_op_stats(ctx->op, ctx->bytes_written, ctx->bytes_read); if (m && !ctx->sent_reply) { MOSDOpReply *reply = ctx->reply; @@ -4048,19 +4047,15 @@ void PrimaryLogPG::reply_ctx(OpContext *ctx, int r, eversion_t v, version_t uv) close_op_ctx(ctx); } -void PrimaryLogPG::log_op_stats(OpContext *ctx) +void PrimaryLogPG::log_op_stats(const OpRequestRef op, + const uint64_t inb, + const uint64_t outb) { - OpRequestRef op = ctx->op; - const MOSDOp *m = static_cast(op->get_req()); - - utime_t now = ceph_clock_now(); - utime_t latency = now; - latency -= ctx->op->get_req()->get_recv_stamp(); - utime_t process_latency = now; - process_latency -= ctx->op->get_dequeued_time(); + const MOSDOp* const m = static_cast(op->get_req()); + const utime_t now = ceph_clock_now(); - uint64_t inb = ctx->bytes_written; - uint64_t outb = ctx->bytes_read; + const utime_t latency = now - m->get_recv_stamp(); + const utime_t process_latency = now - op->get_dequeued_time(); osd->logger->inc(l_osd_op); @@ -4089,8 +4084,9 @@ void PrimaryLogPG::log_op_stats(OpContext *ctx) osd->logger->tinc(l_osd_op_w_lat, latency); osd->logger->hinc(l_osd_op_w_lat_inb_hist, latency.to_nsec(), inb); osd->logger->tinc(l_osd_op_w_process_lat, process_latency); - } else + } else { ceph_abort(); + } dout(15) << "log_op_stats " << *m << " inb " << inb @@ -8485,7 +8481,8 @@ void PrimaryLogPG::complete_read_ctx(int result, OpContext *ctx) if (result >= 0) { if (!ctx->ignore_log_op_stats) { - log_op_stats(ctx); + log_op_stats(ctx->op, ctx->bytes_written, ctx->bytes_read); + publish_stats_to_osd(); } diff --git a/src/osd/PrimaryLogPG.h b/src/osd/PrimaryLogPG.h index 5d0315972c0..19dc377c8a9 100644 --- a/src/osd/PrimaryLogPG.h +++ b/src/osd/PrimaryLogPG.h @@ -1121,7 +1121,7 @@ protected: void reply_ctx(OpContext *ctx, int err); void reply_ctx(OpContext *ctx, int err, eversion_t v, version_t uv); void make_writeable(OpContext *ctx); - void log_op_stats(OpContext *ctx); + void log_op_stats(const OpRequestRef op, uint64_t inb, uint64_t outb); void write_update_size_and_usage(object_stat_sum_t& stats, object_info_t& oi, interval_set& modified, uint64_t offset, -- 2.39.5