From: Xuehan Xu Date: Thu, 9 Jul 2026 06:40:12 +0000 (+0800) Subject: crimson/os/seastore/epm: reserve the space in the cold tier before X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b0e12a5c956592840ba5fe2b5b6ce7fe2cb255eb;p=ceph-ci.git crimson/os/seastore/epm: reserve the space in the cold tier before demoting Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 9f245b15723..dac78b7afac 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -1124,8 +1124,16 @@ ExtentPlacementManager::BackgroundProcess::do_background_cycle() } } + if (proceed_demote && + !try_reserve_cold(logical_bucket_demote_size_per_cycle)) { + proceed_demote = false; + } + if (!proceed_clean_main && !proceed_clean_cold && !proceed_demote) { - ceph_abort_msg("no background process will start"); + // abort when the system is full, following the enospc handling + // in ObjectDataHandler + ceph_abort_msg("no background process will start, " + "this probably means the underlying disks are full"); } return seastar::when_all( [this, FNAME, proceed_clean_main, abort_cold_cleaner_usage, diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index 51ce2c99539..e168b35c637 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -908,9 +908,11 @@ private: ceph_assert(pinboard != nullptr); pinboard->set_background_callback(this); + logical_bucket_demote_size_per_cycle = + get_conf("seastore_logical_bucket_proceed_size_per_cycle"); logical_bucket = create_logical_bucket( get_conf("seastore_logical_bucket_capacity"), - get_conf("seastore_logical_bucket_proceed_size_per_cycle")); + logical_bucket_demote_size_per_cycle); } LOG_PREFIX(BackgroundProcess::init); test_workload = crimson::common::get_conf("crimson_test_workload"); @@ -1356,6 +1358,7 @@ private: AsyncCleanerRef main_cleaner; ExtentPinboard *pinboard = nullptr; LogicalBucketRef logical_bucket; + std::size_t logical_bucket_demote_size_per_cycle = 0; /* * cold tier (optional, see has_cold_tier())