struct ExecutableMessage {
virtual crimson::net::ConnectionRef get_connection() const = 0;
virtual osd_reqid_t get_reqid() const = 0;
+ virtual utime_t get_mtime() const = 0;
virtual epoch_t get_map_epoch() const = 0;
virtual entity_inst_t get_orig_source_inst() const = 0;
virtual uint64_t get_features() const = 0;
osd_reqid_t get_reqid() const final {
return pimpl->get_reqid();
}
+ utime_t get_mtime() const final {
+ return pimpl->get_mtime();
+ };
epoch_t get_map_epoch() const final {
return pimpl->get_map_epoch();
}
auto maybe_mutated = interruptor::make_interruptible(osd_op_errorator::now());
if (want_mutate) {
osd_op_params->req_id = msg->get_reqid();
- //osd_op_params->mtime = msg->get_mtime();
+ osd_op_params->mtime = msg->get_mtime();
maybe_mutated = std::forward<MutFunc>(mut_func)(std::move(txn),
std::move(obc),
std::move(*osd_op_params),
[this, pg]() mutable -> PG::load_obc_iertr::future<> {
logger().debug("{}: got obc lock", *this);
op_info.set_from_op(&*m, *pg->get_osdmap());
- return pg->with_locked_obc(m, op_info, [this, pg](auto obc) mutable {
+ return pg->with_locked_obc(m->get_hobj(), op_info,
+ [this, pg](auto obc) mutable {
return with_blocking_future_interruptible<IOInterruptCondition>(
handle.enter(pp(*pg).process)
).then_interruptible([this, pg, obc]() mutable {
}
PG::load_obc_iertr::future<>
-PG::with_locked_obc(Ref<MOSDOp> &m, const OpInfo &op_info,
- with_obc_func_t &&f)
+PG::with_locked_obc(const hobject_t &hobj,
+ const OpInfo &op_info,
+ with_obc_func_t &&f)
{
if (__builtin_expect(stopping, false)) {
throw crimson::common::system_shutdown_exception();
}
- const hobject_t oid = get_oid(m->get_hobj());
+ const hobject_t oid = get_oid(hobj);
switch (get_lock_type(op_info)) {
case RWState::RWREAD:
if (oid.is_head()) {
ObjectContextRef obc,
with_obc_func_t&& f);
load_obc_iertr::future<> with_locked_obc(
- Ref<MOSDOp> &m,
+ const hobject_t &hobj,
const OpInfo &op_info,
with_obc_func_t&& f);
osd_reqid_t get_reqid() const {
return reqid;
}
+ utime_t get_mtime() const {
+ return mtime;
+ };
epoch_t get_map_epoch() const {
return map_epoch;
}
}
crimson::net::ConnectionRef conn;
osd_reqid_t reqid;
+ utime_t mtime;
epoch_t map_epoch;
entity_inst_t orig_source_inst;
uint64_t features;