std::forward<ErrorFuncTail>(error_func_tail)...));
}
+ template <class ValueFunc>
+ auto safe_then(ValueFunc&& value_func) {
+ return safe_then(std::forward<ValueFunc>(value_func),
+ errorator_type::pass_further{});
+ }
+
template <class Func>
void then(Func&&) = delete;
osd_op.rval = bl.length();
osd_op.outdata = std::move(bl);
return seastar::now();
- }, read_errorator::pass_further{});
+ });
});
case CEPH_OSD_OP_GETXATTR:
return do_read_op([&osd_op] (auto& backend, const auto& os) {
return submit_transaction(std::move(os), std::move(txn), *m);
}
});
- }, OpsExecuter::osd_op_errorator::pass_further{});
+ });
});
}).safe_then([m,this] {
auto reply = make_message<MOSDOpReply>(m.get(), 0, get_osdmap_epoch(),
} else {
return crimson::ct_error::object_corrupted::make();
}
- }, ll_read_errorator::pass_further{});
+ });
}
seastar::future<> PGBackend::stat(
osd_op.op.xattr.value_len = osd_op.outdata.length();
return seastar::now();
//ctx->delta_stats.num_rd_kb += shift_round_up(osd_op.outdata.length(), 10);
- }, get_attr_errorator::pass_further{});
+ });
//ctx->delta_stats.num_rd++;
}