From: Igor Fedotov Date: Wed, 13 Mar 2019 15:51:46 +0000 (+0300) Subject: os/bluestore: make bluestore interval base template. X-Git-Tag: v12.2.12~2^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=7593070e97e60fbdf5d28a208112f5403e18f9f3;p=ceph.git 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) --- diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index abe8b118d95..97c21ad9a59 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);