#include <exception>
#include <system_error>
-class crimson_error : private std::system_error {
+namespace ceph::osd {
+class error : private std::system_error {
public:
- crimson_error(const std::errc ec)
+ error(const std::errc ec)
: system_error(std::make_error_code(ec)) {
}
using system_error::what;
private:
- crimson_error(const int ret) noexcept
+ error(const int ret) noexcept
: system_error(ret, std::system_category()) {
}
};
-struct object_not_found : public crimson_error {
- object_not_found() : crimson_error(std::errc::no_such_file_or_directory) {}
+struct object_not_found : public error {
+ object_not_found() : error(std::errc::no_such_file_or_directory) {}
};
-struct object_corrupted : public crimson_error {
- object_corrupted() : crimson_error(std::errc::illegal_byte_sequence) {}
+struct object_corrupted : public error {
+ object_corrupted() : error(std::errc::illegal_byte_sequence) {}
};
-struct invalid_argument : public crimson_error {
- invalid_argument() : crimson_error(std::errc::invalid_argument) {}
+struct invalid_argument : public error {
+ invalid_argument() : error(std::errc::invalid_argument) {}
};
+} // namespace ceph::osd
0, false);
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 crimson_error& ce) {
- logger().debug("got crimson_error while handling object {}: {} ({})",
- oid, ce.code(), ce.what());
+ }).handle_exception_type([=](const ceph::osd::error& e) {
+ logger().debug("got ceph::osd::error while handling object {}: {} ({})",
+ oid, e.code(), e.what());
backend->evict_object_state(oid);
auto reply = make_message<MOSDOpReply>(
- m.get(), -ce.code().value(), get_osdmap_epoch(), 0, false);
+ m.get(), -e.code().value(), get_osdmap_epoch(), 0, false);
reply->set_enoent_reply_versions(peering_state.get_info().last_update,
peering_state.get_info().last_user_version);
return seastar::make_ready_future<Ref<MOSDOpReply>>(std::move(reply));
oid.snap);
if (clone == end(ss->clones)) {
return seastar::make_exception_future<PGBackend::cached_os_t>(
- object_not_found{});
+ ceph::osd::object_not_found{});
}
// clone
auto soid = oid;
if (clone_snap->second.empty()) {
logger().trace("find_object: {}@[] -- DNE", soid);
return seastar::make_exception_future<PGBackend::cached_os_t>(
- object_not_found{});
+ ceph::osd::object_not_found{});
}
auto first = clone_snap->second.back();
auto last = clone_snap->second.front();
logger().trace("find_object: {}@[{},{}] -- DNE",
soid, first, last);
return seastar::make_exception_future<PGBackend::cached_os_t>(
- object_not_found{});
+ ceph::osd::object_not_found{});
}
logger().trace("find_object: {}@[{},{}] -- HIT",
soid, first, last);
logger().error("full-object read crc {} != expected {} on {}",
crc, *maybe_crc, soid);
// todo: mark soid missing, perform recovery, and retry
- throw object_corrupted{};
+ throw ceph::osd::object_corrupted{};
}
}
return seastar::make_ready_future<bufferlist>(std::move(bl));
{
const ceph_osd_op& op = osd_op.op;
if (op.extent.length != osd_op.indata.length()) {
- throw ::invalid_argument();
+ throw ceph::osd::invalid_argument();
}
const bool existing = maybe_create_new_object(os, txn);