From: Yingxin Cheng Date: Tue, 10 Dec 2024 08:33:21 +0000 (+0800) Subject: crimson/os/seastore: remove d_onodes X-Git-Tag: v20.0.0~24^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9d5eaa0df6ed2f8a8c19838f25ea2d13054ea6e2;p=ceph.git crimson/os/seastore: remove d_onodes Signed-off-by: Zhang Song Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 284748250e1..fbcac976d1e 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -1692,24 +1692,24 @@ seastar::future<> SeaStore::Shard::do_transaction_no_callbacks( #endif return seastar::do_with( std::vector(ctx.iter.objects.size()), - std::vector(ctx.iter.objects.size()), - [this, &ctx](auto& onodes, auto& d_onodes) mutable { + [this, &ctx](auto& onodes) + { return trans_intr::repeat( - [this, &ctx, &onodes, &d_onodes]() mutable + [this, &ctx, &onodes]() -> tm_iertr::future - { - if (ctx.iter.have_op()) { - return _do_transaction_step( - ctx, ctx.ch, onodes, d_onodes, ctx.iter - ).si_then([] { - return seastar::make_ready_future( - seastar::stop_iteration::no); - }); - } else { + { + if (ctx.iter.have_op()) { + return _do_transaction_step( + ctx, ctx.ch, onodes, ctx.iter + ).si_then([] { return seastar::make_ready_future( - seastar::stop_iteration::yes); - }; - }); + seastar::stop_iteration::no); + }); + } else { + return seastar::make_ready_future( + seastar::stop_iteration::yes); + }; + }); }).si_then([this, &ctx] { return transaction_manager->submit_transaction(*ctx.transaction); }); @@ -1751,7 +1751,6 @@ SeaStore::Shard::_do_transaction_step( internal_context_t &ctx, CollectionRef &col, std::vector &onodes, - std::vector &d_onodes, ceph::os::Transaction::iterator &i) { LOG_PREFIX(SeaStoreS::_do_transaction_step); @@ -1812,30 +1811,27 @@ SeaStore::Shard::_do_transaction_step( if (!o) { assert(get_onode); o = get_onode; - d_onodes[op->oid] = get_onode; } + OnodeRef& d_onode = onodes[op->dest_oid]; if ((op->op == Transaction::OP_CLONE || op->op == Transaction::OP_COLL_MOVE_RENAME) - && !d_onodes[op->dest_oid]) { + && !d_onode) { const ghobject_t& dest_oid = i.get_oid(op->dest_oid); DEBUGT("op {}, get_or_create dest oid={} ...", *ctx.transaction, (uint32_t)op->op, dest_oid); //TODO: use when_all_succeed after making onode tree // support parallel extents loading return onode_manager->get_or_create_onode(*ctx.transaction, dest_oid - ).si_then([&onodes, &d_onodes, op](auto dest_onode) { + ).si_then([&d_onode](auto dest_onode) { assert(dest_onode); - auto &d_o = onodes[op->dest_oid]; - assert(!d_o); - assert(!d_onodes[op->dest_oid]); - d_o = dest_onode; - d_onodes[op->dest_oid] = dest_onode; + assert(!d_onode); + d_onode = dest_onode; return seastar::now(); }); } else { return OnodeManager::get_or_create_onode_iertr::now(); } - }).si_then([&ctx, &i, &onodes, &d_onodes, op, this, FNAME]() -> tm_ret { + }).si_then([&ctx, &i, &onodes, op, this, FNAME]() -> tm_ret { const ghobject_t& oid = i.get_oid(op->oid); try { switch (op->op) { @@ -1843,9 +1839,8 @@ SeaStore::Shard::_do_transaction_step( { DEBUGT("op REMOVE, oid={} ...", *ctx.transaction, oid); return _remove(ctx, onodes[op->oid] - ).si_then([&onodes, &d_onodes, op] { + ).si_then([&onodes, op] { onodes[op->oid].reset(); - d_onodes[op->oid].reset(); }); } case Transaction::OP_CREATE: @@ -1983,7 +1978,7 @@ SeaStore::Shard::_do_transaction_step( { DEBUGT("op CLONE, oid={}, dest oid={} ...", *ctx.transaction, oid, i.get_oid(op->dest_oid)); - return _clone(ctx, onodes[op->oid], d_onodes[op->dest_oid]); + return _clone(ctx, onodes[op->oid], onodes[op->dest_oid]); } case Transaction::OP_COLL_MOVE_RENAME: { @@ -1991,10 +1986,9 @@ SeaStore::Shard::_do_transaction_step( *ctx.transaction, oid, i.get_oid(op->dest_oid)); ceph_assert(op->cid == op->dest_cid); return _rename( - ctx, onodes[op->oid], d_onodes[op->dest_oid] - ).si_then([&onodes, &d_onodes, op] { + ctx, onodes[op->oid], onodes[op->dest_oid] + ).si_then([&onodes, op] { onodes[op->oid].reset(); - d_onodes[op->oid].reset(); }); } default: diff --git a/src/crimson/os/seastore/seastore.h b/src/crimson/os/seastore/seastore.h index 5f0a30c673f..66f49b55d84 100644 --- a/src/crimson/os/seastore/seastore.h +++ b/src/crimson/os/seastore/seastore.h @@ -417,7 +417,6 @@ public: internal_context_t &ctx, CollectionRef &col, std::vector &onodes, - std::vector &d_onodes, ceph::os::Transaction::iterator &i); tm_ret _remove_omaps(