From: Yingxin Cheng Date: Thu, 4 Aug 2022 13:19:00 +0000 (+0800) Subject: crimson/os/seastore: extend reserved device ids to 8 bits X-Git-Tag: v18.0.0~336^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1e3f441835ead7983b35c69f5588cacdacfc12fb;p=ceph.git crimson/os/seastore: extend reserved device ids to 8 bits Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/extent_placement_manager.h b/src/crimson/os/seastore/extent_placement_manager.h index 733632b7ee8..6a957a20464 100644 --- a/src/crimson/os/seastore/extent_placement_manager.h +++ b/src/crimson/os/seastore/extent_placement_manager.h @@ -88,7 +88,7 @@ class ExtentPlacementManager { public: ExtentPlacementManager(bool prefer_ool) : prefer_ool{prefer_ool} { - devices_by_id.resize(DEVICE_ID_GLOBAL_MAX, nullptr); + devices_by_id.resize(DEVICE_ID_MAX, nullptr); } void init_ool_writers(SegmentProvider &sp, SegmentSeqAllocator &ssa) { @@ -245,7 +245,7 @@ public: }); }).safe_then([this] { devices_by_id.clear(); - devices_by_id.resize(DEVICE_ID_GLOBAL_MAX, nullptr); + devices_by_id.resize(DEVICE_ID_MAX, nullptr); primary_device = nullptr; }); } diff --git a/src/crimson/os/seastore/seastore_types.cc b/src/crimson/os/seastore/seastore_types.cc index aa9bfba6a92..3134fe3a040 100644 --- a/src/crimson/os/seastore/seastore_types.cc +++ b/src/crimson/os/seastore/seastore_types.cc @@ -98,8 +98,7 @@ std::ostream& operator<<(std::ostream& out, segment_seq_printer_t seq) std::ostream &operator<<(std::ostream &out, const paddr_t &rhs) { - // TODO: extend reserved id to 8 bits. - auto id = rhs.get_device_id() & 0x7F; + auto id = rhs.get_device_id(); out << "paddr<"; if (rhs == P_ADDR_NULL) { out << "NULL"; diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 24bab0a333f..bd6e35fc566 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -56,10 +56,7 @@ using device_id_t = uint8_t; constexpr auto DEVICE_ID_BITS = std::numeric_limits::digits; -constexpr device_id_t DEVICE_ID_GLOBAL_MAX = - std::numeric_limits::max(); -// the max value regardless of addrs_type_t prefix -constexpr device_id_t DEVICE_ID_MAX = DEVICE_ID_GLOBAL_MAX >> 1; +constexpr device_id_t DEVICE_ID_MAX = std::numeric_limits::max(); constexpr device_id_t DEVICE_ID_NULL = DEVICE_ID_MAX; constexpr device_id_t DEVICE_ID_RECORD_RELATIVE = DEVICE_ID_MAX - 1; constexpr device_id_t DEVICE_ID_BLOCK_RELATIVE = DEVICE_ID_MAX - 2; @@ -68,6 +65,7 @@ constexpr device_id_t DEVICE_ID_DELAYED = DEVICE_ID_MAX - 3; constexpr device_id_t DEVICE_ID_FAKE = DEVICE_ID_MAX - 4; constexpr device_id_t DEVICE_ID_ZERO = DEVICE_ID_MAX - 5; constexpr device_id_t DEVICE_ID_MAX_VALID = DEVICE_ID_MAX - 6; +constexpr device_id_t DEVICE_ID_MAX_VALID_SEGMENT = DEVICE_ID_MAX >> 1; struct device_id_printer_t { device_id_t id; @@ -83,8 +81,7 @@ enum class paddr_types_t { }; constexpr paddr_types_t device_id_to_paddr_type(device_id_t id) { - // TODO: extend reserved id to 8 bits. - if ((id & 0x7F) > DEVICE_ID_MAX_VALID) { + if (id > DEVICE_ID_MAX_VALID) { return paddr_types_t::RESERVED; } else if ((id & 0x80) == 0) { return paddr_types_t::SEGMENT; @@ -94,8 +91,6 @@ constexpr paddr_types_t device_id_to_paddr_type(device_id_t id) { } constexpr bool has_seastore_off(device_id_t id) { - // TODO: extend reserved id to 8 bits. - id = id & 0x7F; return id == DEVICE_ID_RECORD_RELATIVE || id == DEVICE_ID_BLOCK_RELATIVE || id == DEVICE_ID_DELAYED || @@ -117,7 +112,7 @@ struct segment_id_t { public: // segment_id_t() == MAX_SEG_ID == NULL_SEG_ID segment_id_t() - : segment_id_t(DEVICE_ID_MAX_VALID, DEVICE_SEGMENT_ID_MAX) {} + : segment_id_t(DEVICE_ID_MAX_VALID_SEGMENT, DEVICE_SEGMENT_ID_MAX) {} segment_id_t(device_id_t id, device_segment_id_t _segment) : segment_id_t(make_internal(id, _segment)) {} @@ -201,7 +196,7 @@ struct __attribute((packed)) segment_id_le_t { constexpr segment_id_t MIN_SEG_ID = segment_id_t::create_const(0, 0); // segment_id_t() == MAX_SEG_ID == NULL_SEG_ID constexpr segment_id_t MAX_SEG_ID = - segment_id_t::create_const(DEVICE_ID_MAX_VALID, DEVICE_SEGMENT_ID_MAX); + segment_id_t::create_const(DEVICE_ID_MAX_VALID_SEGMENT, DEVICE_SEGMENT_ID_MAX); constexpr segment_id_t NULL_SEG_ID = MAX_SEG_ID; /* Monotonically increasing segment seq, uniquely identifies @@ -475,7 +470,7 @@ struct res_paddr_t; struct paddr_t { public: // P_ADDR_MAX == P_ADDR_NULL == paddr_t{} - paddr_t() : paddr_t(DEVICE_ID_GLOBAL_MAX, 0) {} + paddr_t() : paddr_t(DEVICE_ID_MAX, seastore_off_t(0)) {} static paddr_t make_seg_paddr( segment_id_t seg, @@ -734,7 +729,7 @@ struct res_paddr_t : public paddr_t { constexpr paddr_t P_ADDR_MIN = paddr_t::create_const(0, 0, 0); // P_ADDR_MAX == P_ADDR_NULL == paddr_t{} -constexpr paddr_t P_ADDR_MAX = paddr_t::create_const(DEVICE_ID_GLOBAL_MAX, 0, 0); +constexpr paddr_t P_ADDR_MAX = paddr_t::create_const(DEVICE_ID_MAX, 0, 0); constexpr paddr_t P_ADDR_NULL = P_ADDR_MAX; constexpr paddr_t P_ADDR_ZERO = paddr_t::create_const(DEVICE_ID_ZERO, 0, 0);