Divvy up the result bl first, then gift the whole shebang to outbl. If
we gift it first, there's nothing to demux (since we move intead of copy
the bufferlist ptrs).
Signed-off-by: Sage Weil <sage@newdream.net>
if (op->reply_epoch)
*op->reply_epoch = m->get_map_epoch();
- // got data?
- if (op->outbl) {
- if (op->con)
- op->con->revoke_rx_buffer(op->tid);
- m->claim_data(*op->outbl);
- op->outbl = 0;
- }
-
// per-op result demuxing
vector<OSDOp> out_ops;
m->claim_ops(out_ops);
logger->inc(l_osdc_op_commit);
}
+ // got data?
+ if (op->outbl) {
+ if (op->con)
+ op->con->revoke_rx_buffer(op->tid);
+ m->claim_data(*op->outbl);
+ op->outbl = 0;
+ }
+
// done with this tid?
if (!op->onack && !op->oncommit) {
op->session_item.remove_myself();