From: chunmei-liu Date: Wed, 16 Feb 2022 03:13:15 +0000 (-0800) Subject: crimson/seastore: put ObjectDataHandler instance into do_with X-Git-Tag: v18.0.0~1369^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bc1e1116f58ada34c4664791bf77b278f7f82488;p=ceph.git crimson/seastore: put ObjectDataHandler instance into do_with make ObjectDataHandler instance alive before sub functions are resolved. Signed-off-by: chunmei-liu --- diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 0323f81e956..3c17d90be19 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -1145,8 +1145,9 @@ SeaStore::tm_ret SeaStore::_write( } return seastar::do_with( std::move(_bl), - [=, &ctx, &onode](auto &bl) { - return ObjectDataHandler(max_object_size).write( + ObjectDataHandler(max_object_size), + [=, &ctx, &onode](auto &bl, auto &objhandler) { + return objhandler.write( ObjectDataHandler::context_t{ *transaction_manager, *ctx.transaction, @@ -1278,13 +1279,17 @@ SeaStore::tm_ret SeaStore::_truncate( LOG_PREFIX(SeaStore::_truncate); DEBUGT("onode={} size={}", *ctx.transaction, *onode, size); onode->get_mutable_layout(*ctx.transaction).size = size; - return ObjectDataHandler(max_object_size).truncate( - ObjectDataHandler::context_t{ - *transaction_manager, - *ctx.transaction, - *onode - }, - size); + return seastar::do_with( + ObjectDataHandler(max_object_size), + [=, &ctx, &onode](auto &objhandler) { + return objhandler.truncate( + ObjectDataHandler::context_t{ + *transaction_manager, + *ctx.transaction, + *onode + }, + size); + }); } SeaStore::tm_ret SeaStore::_setattrs(