mirror of
https://github.com/Zygo/bees.git
synced 2025-05-17 21:35:45 +02: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:
parent
845267821c
commit
ffe2a767d3
@ -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())
|
||||
|
Loading…
x
Reference in New Issue
Block a user