From 30d722e86114cc5cde6da4ee3e62912e4427b0e6 Mon Sep 17 00:00:00 2001 From: myoungwon oh Date: Fri, 3 Dec 2021 17:31:30 +0900 Subject: [PATCH] seastore/seastore_types: fix wrong masking Fix bit operation due to device_id_t is 8 bit for now Signed-off-by: Myoungwon Oh --- src/crimson/os/seastore/seastore_types.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index f7036b99ece..db7c907a29a 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -78,7 +78,7 @@ private: // mask for segment manager id static constexpr internal_segment_id_t SM_ID_MASK = - 0xF << (std::numeric_limits::digits - DEVICE_ID_LEN_BITS); + 0xFF << (std::numeric_limits::digits - DEVICE_ID_LEN_BITS); // default internal segment id static constexpr internal_segment_id_t DEFAULT_INTERNAL_SEG_ID = (std::numeric_limits::max() >> 1) - 1; @@ -452,10 +452,11 @@ public: // use 1bit in device_id_t for address type void set_device_id(device_id_t id, addr_types_t type = addr_types_t::SEGMENT) { dev_addr &= static_cast( - std::numeric_limits::max()); - dev_addr |= static_cast(id & 0x8) << DEV_ADDR_LEN_BITS; - dev_addr |= static_cast(type) - << (std::numeric_limits::digits - 1); + std::numeric_limits::max() >> DEVICE_ID_LEN_BITS); + dev_addr |= (static_cast(id & + std::numeric_limits::max() >> 1) << DEV_ADDR_LEN_BITS); + dev_addr |= (static_cast(type) + << (std::numeric_limits::digits - 1)); } device_id_t get_device_id() const { -- 2.39.5