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);
} 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;
}
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;
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
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;