{
MMonCommand *m = new MMonCommand(mc.monmap.fsid, last_seen_version);
m->cmd = pending_cmd;
- m->get_data() = pending_bl;
+ m->set_data(pending_bl);
cout << g_clock.now() << " mon" << " <- " << pending_cmd << std::endl;
mc.send_mon_message(m);
void set_footer(const ceph_msg_footer &e) { footer = e; }
ceph_msg_footer &get_footer() { return footer; }
+ /*
+ * If you use get_[data, middle, payload] you shouldn't
+ * use it to change those bufferlists unless you KNOW
+ * there is no throttle being used. The other
+ * functions are throttling-aware as appropriate.
+ */
+
void clear_payload() {
if (throttler) throttler->put(payload.length() + middle.length());
payload.clear();
middle.clear();
}
+ void clear_data() {
+ if (throttler) throttler->put(data.length());
+ data.clear();
+ }
+
bool empty_payload() { return payload.length() == 0; }
bufferlist& get_payload() { return payload; }
void set_payload(bufferlist& bl) {
}
bufferlist& get_data() { return data; }
+ void claim_data(bufferlist& bl) {
+ if (throttler) throttler->put(data.length());
+ bl.claim(data);
+ }
off_t get_data_len() { return data.length(); }
void set_recv_stamp(utime_t t) { recv_stamp = t; }
// discard my reference to the buffer
if (repop->ctx->op)
- repop->ctx->op->get_data().clear();
+ repop->ctx->op->clear_data();
repop->applying = false;
repop->applied = true;
wr->old_version = old_version;
wr->snapset = repop->obc->obs.ssc->snapset;
wr->snapc = repop->ctx->snapc;
- wr->get_data() = repop->ctx->op->get_data(); // _copy_ bufferlist
+ wr->set_data(repop->ctx->op->get_data()); // _copy_ bufferlist
} else {
// ship resulting transaction, log entries, and pg_stats
::encode(repop->ctx->op_t, wr->get_data());
map<sobject_t, interval_set<uint64_t> > clone_subsets;
bufferlist data;
- data.claim(op->get_data());
+ op->claim_data(data);
// we need this later, and it gets clobbered by t.setattrs()
bufferlist oibl;
// got data?
if (op->outbl) {
- op->outbl->claim(m->get_data());
+ m->claim_data(*op->outbl);
op->outbl = 0;
}