diff --git a/include/crucible/btrfs-tree.h b/include/crucible/btrfs-tree.h index f11c6ea..44241da 100644 --- a/include/crucible/btrfs-tree.h +++ b/include/crucible/btrfs-tree.h @@ -33,6 +33,11 @@ namespace crucible { uint64_t block_group_used() const; /// @} + /// @{ Chunk items + uint64_t chunk_length() const; + uint64_t chunk_type() const; + /// @} + /// @{ Dev extent items (physical byte ranges) uint64_t dev_extent_chunk_offset() const; uint64_t dev_extent_length() const; diff --git a/lib/btrfs-tree.cc b/lib/btrfs-tree.cc index 48a7450..39960f8 100644 --- a/lib/btrfs-tree.cc +++ b/lib/btrfs-tree.cc @@ -88,6 +88,20 @@ namespace crucible { return btrfs_get_member(&btrfs_block_group_item::used, m_data); } + uint64_t + BtrfsTreeItem::chunk_length() const + { + THROW_CHECK1(invalid_argument, btrfs_search_type_ntoa(m_type), m_type == BTRFS_CHUNK_ITEM_KEY); + return btrfs_get_member(&btrfs_chunk::length, m_data); + } + + uint64_t + BtrfsTreeItem::chunk_type() const + { + THROW_CHECK1(invalid_argument, btrfs_search_type_ntoa(m_type), m_type == BTRFS_CHUNK_ITEM_KEY); + return btrfs_get_member(&btrfs_chunk::type, m_data); + } + uint64_t BtrfsTreeItem::dev_extent_chunk_offset() const {