}
}
+// TODO: split the method accordingly to os' constness needs
seastar::future<>
-PG::do_osd_op(const ObjectState& os, OSDOp& osd_op, ceph::os::Transaction& txn)
+PG::do_osd_op(ObjectState& os, OSDOp& osd_op, ceph::os::Transaction& txn)
{
// TODO: dispatch via call table?
// TODO: we might want to find a way to unify both input and output
// through path somehow works but this is really nasty.
[[fallthrough]];
case CEPH_OSD_OP_WRITEFULL:
+ // XXX: os = backend->write(std::move(os), ...) instead?
return backend->writefull(os, osd_op, txn);
case CEPH_OSD_OP_SETALLOCHINT:
return seastar::now();
reply->add_flags(CEPH_OSD_FLAG_ACK | CEPH_OSD_FLAG_ONDISK);
return seastar::make_ready_future<Ref<MOSDOpReply>>(std::move(reply));
}).handle_exception_type([=](const object_not_found& dne) {
+ logger().debug("got object_not_found for {}", oid);
+
+ backend->evict_object_state(oid);
auto reply = make_message<MOSDOpReply>(m.get(), -ENOENT, get_osdmap_epoch(),
0, false);
reply->set_enoent_reply_versions(info.last_update,