mirror of
				https://github.com/Zygo/bees.git
				synced 2025-10-31 10:10:34 +01:00 
			
		
		
		
	crucible: extentwalker: add compressed() and bytenr() methods
Also use C++11 syntax for construction. Signed-off-by: Zygo Blaxell <bees@furryterror.org>
This commit is contained in:
		| @@ -8,15 +8,15 @@ namespace crucible { | ||||
|  | ||||
| 	// FIXME:  ExtentCursor is probably a better name | ||||
| 	struct Extent { | ||||
| 		off_t		m_begin; | ||||
| 		off_t		m_end; | ||||
| 		uint64_t	m_physical; | ||||
| 		uint64_t	m_flags; | ||||
| 		off_t		m_begin = 0; | ||||
| 		off_t		m_end = 0; | ||||
| 		uint64_t	m_physical = 0; | ||||
| 		uint64_t	m_flags = 0; | ||||
|  | ||||
| 		// Btrfs extent reference details | ||||
| 		off_t		m_physical_len; | ||||
| 		off_t		m_logical_len; | ||||
| 		off_t		m_offset; | ||||
| 		off_t		m_physical_len = 0; | ||||
| 		off_t		m_logical_len = 0; | ||||
| 		off_t		m_offset = 0; | ||||
|  | ||||
| 		// fiemap flags are uint32_t, so bits 32..63 are OK for us | ||||
|  | ||||
| @@ -38,10 +38,12 @@ namespace crucible { | ||||
| 		off_t physical_len() const { return m_physical_len; } | ||||
| 		off_t logical_len() const { return m_logical_len; } | ||||
| 		off_t offset() const { return m_offset; } | ||||
| 		bool compressed() const; | ||||
| 		uint64_t bytenr() const; | ||||
| 		bool operator==(const Extent &that) const; | ||||
| 		bool operator!=(const Extent &that) const { return !(*this == that); } | ||||
|  | ||||
| 		Extent(); | ||||
| 		Extent() = default; | ||||
| 		Extent(const Extent &e) = default; | ||||
| 	}; | ||||
|  | ||||
|   | ||||
| @@ -79,17 +79,6 @@ namespace crucible { | ||||
| 			<< "] }"; | ||||
| 	} | ||||
|  | ||||
| 	Extent::Extent() : | ||||
| 		m_begin(0), | ||||
| 		m_end(0), | ||||
| 		m_physical(0), | ||||
| 		m_flags(0), | ||||
| 		m_physical_len(0), | ||||
| 		m_logical_len(0), | ||||
| 		m_offset(0) | ||||
| 	{ | ||||
| 	} | ||||
|  | ||||
| 	Extent::operator bool() const | ||||
| 	{ | ||||
| 		THROW_CHECK2(invalid_argument, m_begin, m_end, m_end >= m_begin); | ||||
| @@ -109,6 +98,18 @@ namespace crucible { | ||||
| 		return m_begin == that.m_begin && m_end == that.m_end && m_physical == that.m_physical && m_flags == that.m_flags; | ||||
| 	} | ||||
|  | ||||
| 	bool | ||||
| 	Extent::compressed() const | ||||
| 	{ | ||||
| 		return m_flags & FIEMAP_EXTENT_ENCODED; | ||||
| 	} | ||||
|  | ||||
| 	uint64_t | ||||
| 	Extent::bytenr() const | ||||
| 	{ | ||||
| 		return compressed() ? m_physical : m_physical - m_offset; | ||||
| 	} | ||||
|  | ||||
| 	ExtentWalker::ExtentWalker(Fd fd) : | ||||
| 		m_fd(fd), | ||||
| 		m_current(m_extents.begin()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user