mirror of
https://github.com/ceph/ceph
synced 2025-02-18 08:28:02 +00:00
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:
parent
2bffed3bc9
commit
1d5c8fd306
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user