&pin_list, &reclaimed, &runs] {
reclaimed = 0;
runs++;
+ auto src = Transaction::src_t::CLEANER_MAIN;
+ if (is_cold) {
+ src = Transaction::src_t::CLEANER_COLD;
+ }
return extent_callback->with_transaction_intr(
- Transaction::src_t::CLEANER,
+ src,
"clean_reclaim_space",
[this, &backref_extents, &pin_list, &reclaimed](auto &t)
{
{src_t::READ, sm::label_instance("src", "READ")},
{src_t::TRIM_DIRTY, sm::label_instance("src", "TRIM_DIRTY")},
{src_t::TRIM_ALLOC, sm::label_instance("src", "TRIM_ALLOC")},
- {src_t::CLEANER, sm::label_instance("src", "CLEANER")},
+ {src_t::CLEANER_MAIN, sm::label_instance("src", "CLEANER_MAIN")},
+ {src_t::CLEANER_COLD, sm::label_instance("src", "CLEANER_COLD")},
};
assert(labels_by_src.size() == (std::size_t)src_t::MAX);
src2 == Transaction::src_t::READ) ||
(src1 == Transaction::src_t::TRIM_DIRTY &&
src2 == Transaction::src_t::TRIM_DIRTY) ||
- (src1 == Transaction::src_t::CLEANER &&
- src2 == Transaction::src_t::CLEANER) ||
+ (src1 == Transaction::src_t::CLEANER_MAIN &&
+ src2 == Transaction::src_t::CLEANER_MAIN) ||
+ (src1 == Transaction::src_t::CLEANER_COLD &&
+ src2 == Transaction::src_t::CLEANER_COLD) ||
(src1 == Transaction::src_t::TRIM_ALLOC &&
src2 == Transaction::src_t::TRIM_ALLOC)) {
continue;
auto &rewrite_version_stats = t.get_rewrite_version_stats();
if (trans_src == Transaction::src_t::TRIM_DIRTY) {
stats.committed_dirty_version.increment_stat(rewrite_version_stats);
- } else if (trans_src == Transaction::src_t::CLEANER) {
+ } else if (trans_src == Transaction::src_t::CLEANER_MAIN ||
+ trans_src == Transaction::src_t::CLEANER_COLD) {
stats.committed_reclaim_version.increment_stat(rewrite_version_stats);
} else {
assert(rewrite_version_stats.is_clear());
src2 == Transaction::src_t::READ));
assert(!(src1 == Transaction::src_t::TRIM_DIRTY &&
src2 == Transaction::src_t::TRIM_DIRTY));
- assert(!(src1 == Transaction::src_t::CLEANER &&
- src2 == Transaction::src_t::CLEANER));
+ assert(!(src1 == Transaction::src_t::CLEANER_MAIN &&
+ src2 == Transaction::src_t::CLEANER_MAIN));
+ assert(!(src1 == Transaction::src_t::CLEANER_COLD &&
+ src2 == Transaction::src_t::CLEANER_COLD));
assert(!(src1 == Transaction::src_t::TRIM_ALLOC &&
src2 == Transaction::src_t::TRIM_ALLOC));
return os << "TRIM_DIRTY";
case transaction_type_t::TRIM_ALLOC:
return os << "TRIM_ALLOC";
- case transaction_type_t::CLEANER:
- return os << "CLEANER";
+ case transaction_type_t::CLEANER_MAIN:
+ return os << "CLEANER_MAIN";
+ case transaction_type_t::CLEANER_COLD:
+ return os << "CLEANER_COLD";
case transaction_type_t::MAX:
return os << "TRANS_TYPE_NULL";
default: