From: myoungwon oh Date: Fri, 3 Dec 2021 08:31:30 +0000 (+0900) Subject: seastore/seastore_types: fix wrong masking X-Git-Tag: v18.0.0~1531^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=30d722e86114cc5cde6da4ee3e62912e4427b0e6;p=ceph-ci.git seastore/seastore_types: fix wrong masking Fix bit operation due to device_id_t is 8 bit for now Signed-off-by: Myoungwon Oh --- 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 {