@@ -1480,28 +1480,49 @@ SeaStore::Shard::_do_transaction_step(
14801480}
14811481
14821482SeaStore::Shard::tm_ret
1483- SeaStore::Shard::_remove (
1483+ SeaStore::Shard::_remove_omaps (
14841484 internal_context_t &ctx,
1485- OnodeRef &onode)
1485+ OnodeRef &onode,
1486+ omap_root_t &&omap_root)
14861487{
1487- LOG_PREFIX (SeaStore::_remove);
1488- DEBUGT (" onode={}" , *ctx.transaction , *onode);
1489- auto fut = BtreeOMapManager::omap_clear_iertr::now ();
1490- auto omap_root = onode->get_layout ().omap_root .get (
1491- onode->get_metadata_hint (device->get_block_size ()));
14921488 if (omap_root.get_location () != L_ADDR_NULL) {
1493- fut = seastar::do_with (
1489+ return seastar::do_with (
14941490 BtreeOMapManager (*transaction_manager),
1495- onode->get_layout ().omap_root .get (
1496- onode->get_metadata_hint (device->get_block_size ())),
1491+ std::move (omap_root),
14971492 [&ctx, onode](auto &omap_manager, auto &omap_root) {
14981493 return omap_manager.omap_clear (
14991494 omap_root,
15001495 *ctx.transaction
1496+ ).handle_error_interruptible (
1497+ crimson::ct_error::input_output_error::pass_further (),
1498+ crimson::ct_error::assert_all{
1499+ " Invalid error in SeaStore::_remove"
1500+ }
15011501 );
15021502 });
15031503 }
1504- return fut.si_then ([this , &ctx, onode] {
1504+ return tm_iertr::now ();
1505+ }
1506+
1507+ SeaStore::Shard::tm_ret
1508+ SeaStore::Shard::_remove (
1509+ internal_context_t &ctx,
1510+ OnodeRef &onode)
1511+ {
1512+ LOG_PREFIX (SeaStore::_remove);
1513+ DEBUGT (" onode={}" , *ctx.transaction , *onode);
1514+ return _remove_omaps (
1515+ ctx,
1516+ onode,
1517+ onode->get_layout ().omap_root .get (
1518+ onode->get_metadata_hint (device->get_block_size ()))
1519+ ).si_then ([this , &ctx, onode]() mutable {
1520+ return _remove_omaps (
1521+ ctx,
1522+ onode,
1523+ onode->get_layout ().xattr_root .get (
1524+ onode->get_metadata_hint (device->get_block_size ())));
1525+ }).si_then ([this , &ctx, onode] {
15051526 return seastar::do_with (
15061527 ObjectDataHandler (max_object_size),
15071528 [=, this , &ctx](auto &objhandler) {
0 commit comments