From: Sage Weil Date: Thu, 22 Jan 2015 02:40:41 +0000 (-0800) Subject: osd: avoid txn append in ReplicatedBackend::submit_transaction X-Git-Tag: v9.0.2~87^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3fdace649d6eb239146585be156153de60c9f567;p=ceph.git osd: avoid txn append in ReplicatedBackend::submit_transaction Signed-off-by: Sage Weil --- diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc index 48bface83ff5..44614d8e694d 100644 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@ -600,10 +600,10 @@ void ReplicatedBackend::submit_transaction( &op, op_t); - ObjectStore::Transaction local_t; - local_t.set_use_tbl(op_t->get_use_tbl()); + ObjectStore::Transaction *local_t = new ObjectStore::Transaction; + local_t->set_use_tbl(op_t->get_use_tbl()); if (!(t->get_temp_added().empty())) { - get_temp_coll(&local_t); + get_temp_coll(local_t); add_temp_objs(t->get_temp_added()); } clear_temp_objs(t->get_temp_cleared()); @@ -614,10 +614,7 @@ void ReplicatedBackend::submit_transaction( trim_to, trim_rollback_to, true, - &local_t); - - local_t.append(*op_t); - local_t.swap(*op_t); + local_t); op_t->register_on_applied_sync(on_local_applied_sync); op_t->register_on_applied( @@ -625,11 +622,16 @@ void ReplicatedBackend::submit_transaction( new C_OSD_OnOpApplied(this, &op))); op_t->register_on_applied( new ObjectStore::C_DeleteTransaction(op_t)); + op_t->register_on_applied( + new ObjectStore::C_DeleteTransaction(local_t)); op_t->register_on_commit( parent->bless_context( new C_OSD_OnOpCommit(this, &op))); - - parent->queue_transaction(op_t, op.op); + + list tls; + tls.push_back(local_t); + tls.push_back(op_t); + parent->queue_transactions(tls, op.op); delete t; }