From 2a940fe5a68e81d705190283443a0a03c65384e8 Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Wed, 13 Mar 2019 18:51:46 +0300 Subject: [PATCH] os/bluestore: make bluestore interval base template. We might need intervals at BlueStore with both 32-bit and 64-bit lengths. Having base template eliminates the need for copy/paste Signed-off-by: Igor Fedotov (cherry picked from commit f775d4227fb9432840c795115669766565c5e718) --- src/os/bluestore/bluestore_types.h | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index e83d32622fc99..87fbd981d9f80 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -66,17 +66,16 @@ WRITE_CLASS_DENC(bluestore_cnode_t) ostream& operator<<(ostream& out, const bluestore_cnode_t& l); -/// pextent: physical extent -struct bluestore_pextent_t { +template +struct bluestore_interval_t +{ static const uint64_t INVALID_OFFSET = ~0ull; - uint64_t offset = 0; - uint32_t length = 0; + OFFS_TYPE offset = 0; + LEN_TYPE length = 0; - bluestore_pextent_t() {} - bluestore_pextent_t(uint64_t o, uint64_t l) : offset(o), length(l) {} - bluestore_pextent_t(const bluestore_pextent_t &ext) : - offset(ext.offset), length(ext.length) {} + bluestore_interval_t(){} + bluestore_interval_t(uint64_t o, uint64_t l) : offset(o), length(l) {} bool is_valid() const { return offset != INVALID_OFFSET; @@ -85,10 +84,20 @@ struct bluestore_pextent_t { return offset != INVALID_OFFSET ? offset + length : INVALID_OFFSET; } - bool operator==(const bluestore_pextent_t& other) const { + bool operator==(const bluestore_interval_t& other) const { return offset == other.offset && length == other.length; } +}; + +/// pextent: physical extent +struct bluestore_pextent_t : public bluestore_interval_t +{ + bluestore_pextent_t() {} + bluestore_pextent_t(uint64_t o, uint64_t l) : bluestore_interval_t(o, l) {} + bluestore_pextent_t(const bluestore_interval_t &ext) : + bluestore_interval_t(ext.offset, ext.length) {} + DENC(bluestore_pextent_t, v, p) { denc_lba(v.offset, p); denc_varint_lowz(v.length, p); -- 2.39.5