]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore/epm: reserve the space in the cold tier before
authorXuehan Xu <xuxuehan@qianxin.com>
Thu, 9 Jul 2026 06:40:12 +0000 (14:40 +0800)
committerXuehan Xu <xuxuehan@qianxin.com>
Fri, 10 Jul 2026 14:24:38 +0000 (22:24 +0800)
demoting

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
src/crimson/os/seastore/extent_placement_manager.cc
src/crimson/os/seastore/extent_placement_manager.h

index 9f245b1572356c5e7848a84c0385aaa4cbe8c33b..dac78b7afac884dc22ca46757bbf4055d204dc8d 100644 (file)
@@ -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,
index 51ce2c99539b061827ee884c0f8f7f1925b5257c..e168b35c637425a36c0f7befa9cd59294018baf3 100644 (file)
@@ -908,9 +908,11 @@ private:
         ceph_assert(pinboard != nullptr);
         pinboard->set_background_callback(this);
 
+        logical_bucket_demote_size_per_cycle =
+          get_conf<Option::size_t>("seastore_logical_bucket_proceed_size_per_cycle");
         logical_bucket = create_logical_bucket(
           get_conf<Option::size_t>("seastore_logical_bucket_capacity"),
-          get_conf<Option::size_t>("seastore_logical_bucket_proceed_size_per_cycle"));
+          logical_bucket_demote_size_per_cycle);
       }
       LOG_PREFIX(BackgroundProcess::init);
       test_workload = crimson::common::get_conf<bool>("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())