]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: fix up log_op_stats to actually work
authorSage Weil <sage.weil@dreamhost.com>
Thu, 23 Jun 2011 20:32:59 +0000 (13:32 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Thu, 23 Jun 2011 21:57:25 +0000 (14:57 -0700)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index babc561ec718db8713843df51562a52eb0a8df0b..d9a6016830ab7696144603c612763f72bac406f4 100644 (file)
@@ -650,22 +650,25 @@ void ReplicatedPG::log_op_stats(OpContext *ctx)
   utime_t latency = now;
   latency -= ctx->op->get_recv_stamp();
 
+  uint64_t inb = ctx->bytes_written;
+  uint64_t outb = ctx->bytes_read;
+
   osd->logger->inc(l_osd_op);
 
-  osd->logger->inc(l_osd_op_outb, ctx->outdata.length());
-  osd->logger->inc(l_osd_op_inb, ctx->bytes_written);
+  osd->logger->inc(l_osd_op_outb, outb);
+  osd->logger->inc(l_osd_op_inb, inb);
   osd->logger->favg(l_osd_op_lat, latency);
 
   MOSDOp *op = (MOSDOp*)ctx->op;
 
   if (op->may_read() && op->may_write()) {
     osd->logger->inc(l_osd_op_rw);
-    osd->logger->inc(l_osd_op_rw_inb, ctx->outdata.length());
-    osd->logger->inc(l_osd_op_rw_outb, ctx->bytes_written);
+    osd->logger->inc(l_osd_op_rw_inb, inb);
+    osd->logger->inc(l_osd_op_rw_outb, outb);
     osd->logger->favg(l_osd_op_rw_lat, latency);
   } else if (op->may_read()) {
     osd->logger->inc(l_osd_op_r);
-    osd->logger->inc(l_osd_op_r_outb, ctx->outdata.length());
+    osd->logger->inc(l_osd_op_r_outb, outb);
     osd->logger->favg(l_osd_op_r_lat, latency);
 
     Mutex::Locker lock(osd->peer_stat_lock);
@@ -674,10 +677,12 @@ void ReplicatedPG::log_op_stats(OpContext *ctx)
 
   } else if (op->may_write()) {
     osd->logger->inc(l_osd_op_w);
-    osd->logger->inc(l_osd_op_w_inb, ctx->bytes_written);
+    osd->logger->inc(l_osd_op_w_inb, inb);
     osd->logger->favg(l_osd_op_w_lat, latency);
   } else
     assert(0);
+
+  dout(15) << "log_op_stats " << *op << " inb " << inb << " outb " << outb << " latency " << latency << dendl;
 }
 
 
@@ -2346,6 +2351,8 @@ int ReplicatedPG::prepare_transaction(OpContext *ctx)
   if (result == 0)
     do_osd_op_effects(ctx);
 
+  ctx->bytes_read = ctx->outdata.length();
+
   // read-op?  done?
   if (ctx->op_t.empty() && !ctx->modify)
     return result;
index 3ac3739924b638c531698674e67d59bcbd58cbb3..fffcd9041207d470e4dede625d2c40816a10bd9e 100644 (file)
@@ -349,7 +349,7 @@ public:
     list<notify_info_t> notifies;
     list<uint64_t> notify_acks;
     
-    uint64_t bytes_written;
+    uint64_t bytes_written, bytes_read;
 
     utime_t mtime;
     SnapContext snapc;           // writer snap context
@@ -381,7 +381,7 @@ public:
       new_stats(_pg->info.stats),
       modify(false), user_modify(false),
       watch_connect(false), watch_disconnect(false),
-      bytes_written(0),
+      bytes_written(0), bytes_read(0),
       obc(0), clone_obc(0), snapset_obc(0), data_off(0), reply(NULL), pg(_pg) { 
       if (_ssc) {
        new_snapset = _ssc->snapset;