Functions | |
| bool | read_exact (DiskReader &reader, uint64_t off, void *dst, size_t n) |
| bool | validate_geometry (DiskReader &reader, uint64_t volume_offset, const xfs::Superblock &sb, std::string &err) |
| void | load_ag_headers (DiskReader &reader, uint64_t volume_offset, const xfs::Superblock &sb, uint32_t agno, xfs::AGContext &ag, std::vector< std::string > &logs) |
| bool | read_dinode (DiskReader &reader, const xfs::VolumeContext &vol, uint64_t ino, std::vector< unsigned char > &buf) |
| bool | write_extents_to_path (DiskReader &reader, const xfs::VolumeContext &vol, std::vector< xfs::Extent > extents, uint64_t file_size, const fs::path &out_path, std::string &err) |
| bool | collect_extents (DiskReader &reader, const xfs::VolumeContext &vol, const xfs::DinodeCore &core, const unsigned char *fork_data, uint32_t fork_len, uint32_t max_extents, std::vector< xfs::Extent > &out, std::vector< std::string > &logs, std::string &err) |
| bool | read_extents_data (DiskReader &reader, const xfs::VolumeContext &vol, const std::vector< xfs::Extent > &extents, uint64_t file_size, std::vector< unsigned char > &out, std::string &err) |
| bool | collect_dir_entries_block_or_leaf (DiskReader &reader, const xfs::VolumeContext &vol, const std::vector< xfs::Extent > &extents, bool has_ftype, std::vector< xfs::DirEntry > &out, std::vector< std::string > &logs) |
Variables | |
| constexpr uint64_t | XFS_DIR2_LEAF_OFFSET_BLOCKS = 32ull * 1024ull * 1024ull * 1024ull / 4096ull |
| bool anonymous_namespace{xfs_recovery.cpp}::collect_dir_entries_block_or_leaf | ( | DiskReader & | reader, |
| const xfs::VolumeContext & | vol, | ||
| const std::vector< xfs::Extent > & | extents, | ||
| bool | has_ftype, | ||
| std::vector< xfs::DirEntry > & | out, | ||
| std::vector< std::string > & | logs ) |
Definition at line 348 of file xfs_recovery.cpp.
References xfs::be32(), xfs::Superblock::blocksize, collect_dir_entries_block_or_leaf(), xfs::fsb_to_disk_offset(), xfs::Superblock::is_v5(), xfs::parse_dir_data_block(), DiskReader::read_at(), xfs::VolumeContext::sb, xfs::XFS_DIR2_BLOCK_MAGIC, xfs::XFS_DIR2_DATA_MAGIC, xfs::XFS_DIR3_BLOCK_MAGIC, and xfs::XFS_DIR3_DATA_MAGIC.
Referenced by collect_dir_entries_block_or_leaf().
| bool anonymous_namespace{xfs_recovery.cpp}::collect_extents | ( | DiskReader & | reader, |
| const xfs::VolumeContext & | vol, | ||
| const xfs::DinodeCore & | core, | ||
| const unsigned char * | fork_data, | ||
| uint32_t | fork_len, | ||
| uint32_t | max_extents, | ||
| std::vector< xfs::Extent > & | out, | ||
| std::vector< std::string > & | logs, | ||
| std::string & | err ) |
Definition at line 260 of file xfs_recovery.cpp.
References collect_extents(), xfs::decode_extents_inline(), xfs::DinodeCore::format, xfs::Superblock::is_v5(), xfs::DinodeCore::nextents, xfs::VolumeContext::sb, xfs::walk_extent_btree_root(), xfs::XFS_DINODE_FMT_BTREE, and xfs::XFS_DINODE_FMT_EXTENTS.
Referenced by collect_extents().
| void anonymous_namespace{xfs_recovery.cpp}::load_ag_headers | ( | DiskReader & | reader, |
| uint64_t | volume_offset, | ||
| const xfs::Superblock & | sb, | ||
| uint32_t | agno, | ||
| xfs::AGContext & | ag, | ||
| std::vector< std::string > & | logs ) |
Definition at line 82 of file xfs_recovery.cpp.
References xfs::Superblock::agblocks, xfs::AGContext::agf, xfs::AGContext::agf_loaded, xfs::AGContext::agi, xfs::AGContext::agi_loaded, xfs::Superblock::blocksize, xfs::Superblock::is_v5(), load_ag_headers(), xfs::parse_agf(), xfs::parse_agi(), read_exact(), xfs::Superblock::sectsize, and DiskReader::size().
Referenced by load_ag_headers().
| bool anonymous_namespace{xfs_recovery.cpp}::read_dinode | ( | DiskReader & | reader, |
| const xfs::VolumeContext & | vol, | ||
| uint64_t | ino, | ||
| std::vector< unsigned char > & | buf ) |
Definition at line 146 of file xfs_recovery.cpp.
References xfs::Superblock::agblocks, xfs::InodeAddress::agbno, xfs::Superblock::agcount, xfs::InodeAddress::agno, xfs::Superblock::blocksize, xfs::crack_inode(), xfs::Superblock::inodesize, xfs::InodeAddress::offset, DiskReader::read_at(), read_dinode(), xfs::VolumeContext::sb, and xfs::VolumeContext::volume_offset.
Referenced by read_dinode().
| bool anonymous_namespace{xfs_recovery.cpp}::read_exact | ( | DiskReader & | reader, |
| uint64_t | off, | ||
| void * | dst, | ||
| size_t | n ) |
Definition at line 55 of file xfs_recovery.cpp.
References DiskReader::read_at(), and read_exact().
Referenced by load_ag_headers(), and read_exact().
| bool anonymous_namespace{xfs_recovery.cpp}::read_extents_data | ( | DiskReader & | reader, |
| const xfs::VolumeContext & | vol, | ||
| const std::vector< xfs::Extent > & | extents, | ||
| uint64_t | file_size, | ||
| std::vector< unsigned char > & | out, | ||
| std::string & | err ) |
Definition at line 290 of file xfs_recovery.cpp.
References xfs::Superblock::blocksize, xfs::fsb_to_disk_offset(), DiskReader::read_at(), read_extents_data(), and xfs::VolumeContext::sb.
Referenced by read_extents_data().
| bool anonymous_namespace{xfs_recovery.cpp}::validate_geometry | ( | DiskReader & | reader, |
| uint64_t | volume_offset, | ||
| const xfs::Superblock & | sb, | ||
| std::string & | err ) |
Definition at line 62 of file xfs_recovery.cpp.
References DiskReader::size(), validate_geometry(), and xfs::Superblock::volume_size_bytes().
Referenced by validate_geometry().
| bool anonymous_namespace{xfs_recovery.cpp}::write_extents_to_path | ( | DiskReader & | reader, |
| const xfs::VolumeContext & | vol, | ||
| std::vector< xfs::Extent > | extents, | ||
| uint64_t | file_size, | ||
| const fs::path & | out_path, | ||
| std::string & | err ) |
Definition at line 163 of file xfs_recovery.cpp.
References xfs::Superblock::blocksize, xfs::fsb_to_disk_offset(), DiskReader::read_at(), xfs::VolumeContext::sb, and write_extents_to_path().
Referenced by write_extents_to_path().
|
constexpr |
Definition at line 346 of file xfs_recovery.cpp.