106 return is_v5 ? 56u : 16u;
116 uint32_t expected_magic_v4,
117 uint32_t expected_magic_v5,
118 BtreeNodeHeader& out);
166 std::function<bool(
const InobtRec& rec, uint32_t agno)>;
172 std::vector<std::string>& logs,
178 std::vector<std::string>& logs);
207 std::vector<std::string>& logs,
213 std::vector<std::string>& logs);
242 const VolumeContext& vol,
243 std::vector<AllocatedInode>& out);
249 const VolumeContext& vol,
250 std::vector<AllocatedInode>& out);
334 return is_v5 ? 72u : 24u;
339 uint32_t expected_magic_v4,
340 uint32_t expected_magic_v5,
341 BtreeLongHeader& out);
360 const VolumeContext& vol,
361 const unsigned char* root_buf,
364 uint32_t max_extents,
365 std::vector<Extent>& out,
366 std::vector<std::string>& logs,
constexpr uint32_t NULLAGBLOCK
bool walk_inode_btree(DiskReader &reader, const VolumeContext &vol, uint32_t agno, const InobtRecordCallback &on_record, std::vector< std::string > &logs, std::string &error)
bool walk_all_free_inode_records(DiskReader &reader, const VolumeContext &vol, const InobtRecordCallback &on_record, std::vector< std::string > &logs)
bool parse_btree_long_header(const unsigned char *buf, uint32_t expected_magic_v4, uint32_t expected_magic_v5, BtreeLongHeader &out)
bool walk_extent_btree_root(DiskReader &reader, const VolumeContext &vol, const unsigned char *root_buf, uint32_t root_len, bool is_v5_volume, uint32_t max_extents, std::vector< Extent > &out, std::vector< std::string > &logs, std::string &error)
uint32_t btree_long_header_size(bool is_v5)
constexpr uint32_t XFS_BMBT_MAGIC_V5
constexpr uint32_t BMBT_PTR_SIZE_LONG
bool parse_btree_header(const unsigned char *buf, uint32_t expected_magic_v4, uint32_t expected_magic_v5, BtreeNodeHeader &out)
constexpr uint32_t XFS_BMBT_MAGIC_V4
void expand_chunk(const InobtRec &rec, uint32_t agno, const VolumeContext &vol, std::vector< AllocatedInode > &out)
uint32_t btree_header_size(bool is_v5)
void parse_inobt_record(const unsigned char *buf, bool is_v5_sparse, InobtRec &out)
constexpr uint32_t BMBT_KEY_SIZE_LONG
bool walk_all_inode_records(DiskReader &reader, const VolumeContext &vol, const InobtRecordCallback &on_record, std::vector< std::string > &logs)
bool walk_free_inode_btree(DiskReader &reader, const VolumeContext &vol, uint32_t agno, const InobtRecordCallback &on_record, std::vector< std::string > &logs, std::string &error)
constexpr uint32_t BMBT_REC_SIZE
std::function< bool(const InobtRec &rec, uint32_t agno)> InobtRecordCallback
void expand_chunk_free(const InobtRec &rec, uint32_t agno, const VolumeContext &vol, std::vector< AllocatedInode > &out)
constexpr uint64_t NULLFSBLOCK