ostream& operator<<(ostream& out, const bluestore_cnode_t& l);
-/// pextent: physical extent
-struct bluestore_pextent_t {
+template <typename OFFS_TYPE, typename LEN_TYPE>
+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;
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<uint64_t, uint32_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);