From: Matan Breizman Date: Mon, 29 Sep 2025 11:38:46 +0000 (+0000) Subject: crimson/os/seastore: extend mkfs/mount errorators to enospc X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=02d18b304494ae2e42555fafbb87e3d3dc95d3f8;p=ceph.git crimson/os/seastore: extend mkfs/mount errorators to enospc Previously when after being unable to open enough segments: ``` ERROR 2025-09-29 11:21:53,993 [shard 2:main] seastore_epm - ExtentPlacementManager::open_for_write: Not enough EMPTY segments! Consider increasing the device size (needed 6 got 2) ``` The abort message was: ``` ERROR 2025-09-29 11:21:53,994 [shard 2:main] osd - /home/matan/ceph/src/crimson/common/errorator.h:1319 : In function 'crimson::ct_error::assert_all::operator() --- diff --git a/src/crimson/os/seastore/extent_placement_manager.cc b/src/crimson/os/seastore/extent_placement_manager.cc index 7a11dc7cf2e..99a713fcbc5 100644 --- a/src/crimson/os/seastore/extent_placement_manager.cc +++ b/src/crimson/os/seastore/extent_placement_manager.cc @@ -458,8 +458,7 @@ ExtentPlacementManager::open_for_write() ERROR("Not enough EMPTY segments! " "Consider increasing the device size (needed {} got {})", total_writers_num, segments->get_num_empty()); - // TODO: open_ertr should be expanded to enospc - co_await open_ertr::future<>(crimson::ct_error::input_output_error::make()); + co_await open_ertr::future<>(crimson::ct_error::enospc::make()); } DEBUG("opening DATA writers", num_devices); diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index e603ccf9d43..3d3980b9949 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -35,7 +35,8 @@ public: virtual writer_stats_t get_stats() const = 0; - using open_ertr = base_ertr; + using open_ertr = base_ertr::extend< + crimson::ct_error::enospc>; virtual open_ertr::future<> open() = 0; virtual paddr_t alloc_paddr(extent_len_t length) = 0; diff --git a/src/crimson/os/seastore/transaction_manager.h b/src/crimson/os/seastore/transaction_manager.h index 9f2988ec8e2..e582d55abe9 100644 --- a/src/crimson/os/seastore/transaction_manager.h +++ b/src/crimson/os/seastore/transaction_manager.h @@ -76,11 +76,13 @@ public: shard_stats_t& shard_stats); /// Writes initial metadata to disk - using mkfs_ertr = base_ertr; + using mkfs_ertr = base_ertr::extend< + crimson::ct_error::enospc>; mkfs_ertr::future<> mkfs(); /// Reads initial metadata from disk - using mount_ertr = base_ertr; + using mount_ertr = base_ertr::extend< + crimson::ct_error::enospc>; mount_ertr::future<> mount(); /// Closes transaction_manager