};
template <typename CounterT>
- using counter_by_src_t = std::array<CounterT, Transaction::SRC_MAX>;
+ using counter_by_src_t = std::array<CounterT, TRANSACTION_TYPE_MAX>;
static constexpr std::size_t NUM_SRC_COMB =
- Transaction::SRC_MAX * (Transaction::SRC_MAX + 1) / 2;
+ TRANSACTION_TYPE_MAX * (TRANSACTION_TYPE_MAX + 1) / 2;
struct {
counter_by_src_t<uint64_t> trans_created_by_src;
plain_mdlength += ceph::encoded_sizeof(delta);
}
+std::ostream &operator<<(std::ostream &os, transaction_type_t type)
+{
+ switch (type) {
+ case transaction_type_t::MUTATE:
+ return os << "MUTATE";
+ case transaction_type_t::READ:
+ return os << "READ";
+ case transaction_type_t::CLEANER_TRIM:
+ return os << "CLEANER_TRIM";
+ case transaction_type_t::TRIM_BACKREF:
+ return os << "TRIM_BACKREF";
+ case transaction_type_t::CLEANER_RECLAIM:
+ return os << "CLEANER_RECLAIM";
+ case transaction_type_t::MAX:
+ return os << "TRANS_TYPE_NULL";
+ default:
+ return os << "INVALID_TRANS_TYPE("
+ << static_cast<std::size_t>(type)
+ << ")";
+ }
+}
+
std::ostream &operator<<(std::ostream& out, const record_size_t& rsize)
{
return out << "record_size_t("
};
std::ostream &operator<<(std::ostream &out, const segment_tail_t &tail);
+enum class transaction_type_t : uint8_t {
+ MUTATE = 0,
+ READ, // including weak and non-weak read transactions
+ CLEANER_TRIM,
+ TRIM_BACKREF,
+ CLEANER_RECLAIM,
+ MAX
+};
+
+static constexpr auto TRANSACTION_TYPE_NULL = transaction_type_t::MAX;
+
+static constexpr auto TRANSACTION_TYPE_MAX = static_cast<std::size_t>(
+ transaction_type_t::MAX);
+
+std::ostream &operator<<(std::ostream &os, transaction_type_t type);
+
+constexpr bool is_valid_transaction(transaction_type_t type) {
+ return type < transaction_type_t::MAX;
+}
+
+constexpr bool is_cleaner_transaction(transaction_type_t type) {
+ return (type >= transaction_type_t::CLEANER_TRIM &&
+ type < transaction_type_t::MAX);
+}
+
struct record_size_t {
extent_len_t plain_mdlength = 0; // mdlength without the record header
extent_len_t dlength = 0;
return ret;
}
- enum class src_t : uint8_t {
- MUTATE = 0,
- READ, // including weak and non-weak read transactions
- CLEANER_TRIM,
- TRIM_BACKREF,
- CLEANER_RECLAIM,
- MAX
- };
- static constexpr auto SRC_MAX = static_cast<std::size_t>(src_t::MAX);
+ using src_t = transaction_type_t;
src_t get_src() const {
return src;
}
};
using TransactionRef = Transaction::Ref;
-inline std::ostream& operator<<(std::ostream& os,
- const Transaction::src_t& src) {
- switch (src) {
- case Transaction::src_t::MUTATE:
- return os << "MUTATE";
- case Transaction::src_t::READ:
- return os << "READ";
- case Transaction::src_t::CLEANER_TRIM:
- return os << "CLEANER_TRIM";
- case Transaction::src_t::TRIM_BACKREF:
- return os << "TRIM_BACKREF";
- case Transaction::src_t::CLEANER_RECLAIM:
- return os << "CLEANER_RECLAIM";
- default:
- ceph_abort("impossible");
- }
-}
-
-constexpr bool is_cleaner_transaction(Transaction::src_t src) {
- return (src >= Transaction::src_t::CLEANER_TRIM &&
- src < Transaction::src_t::MAX);
-}
-
/// Should only be used with dummy staged-fltree node extent manager
inline TransactionRef make_test_transaction() {
return std::make_unique<Transaction>(