objecter: gift reply data to outbl _after_ demuxing

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>
This commit is contained in:
Sage Weil 2012-01-17 21:10:05 -08:00
parent 2bffed3bc9
commit 1d5c8fd306

View File

@ -1170,14 +1170,6 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
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);
@ -1217,6 +1209,14 @@ void Objecter::handle_osd_op_reply(MOSDOpReply *m)
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();