38inline uint16_t
be16(
const unsigned char* p) {
39 return static_cast<uint16_t
>((p[0] << 8) | p[1]);
41inline uint32_t
be32(
const unsigned char* p) {
42 return (
static_cast<uint32_t
>(p[0]) << 24) |
43 (
static_cast<uint32_t
>(p[1]) << 16) |
44 (
static_cast<uint32_t
>(p[2]) << 8) |
45 static_cast<uint32_t
>(p[3]);
47inline uint64_t
be64(
const unsigned char* p) {
48 return (
static_cast<uint64_t
>(p[0]) << 56) |
49 (
static_cast<uint64_t
>(p[1]) << 48) |
50 (
static_cast<uint64_t
>(p[2]) << 40) |
51 (
static_cast<uint64_t
>(p[3]) << 32) |
52 (
static_cast<uint64_t
>(p[4]) << 24) |
53 (
static_cast<uint64_t
>(p[5]) << 16) |
54 (
static_cast<uint64_t
>(p[6]) << 8) |
55 static_cast<uint64_t
>(p[7]);
139 std::array<uint8_t, 16>
uuid {};
206 while (!s.empty() && (s.back() ==
'\0' || s.back() ==
' ')) s.pop_back();
244bool parse_agf(
const unsigned char* buf, AGF& out);
273bool parse_agi(
const unsigned char* buf, AGI& out);
277bool parse_agi(
const unsigned char* buf,
bool is_v5, AGI& out);
302InodeAddress
crack_inode(uint64_t ino,
const Superblock& sb);
321 std::vector<AGContext>
ag {};
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_BIGTIME
constexpr uint16_t XFS_SB_VERSION_NUMBITS
constexpr uint32_t XFS_ABTB_MAGIC_V4
constexpr uint16_t XFS_SB_VERSION_SHAREDBIT
constexpr uint16_t XFS_SB_VERSION_QUOTABIT
bool parse_agf(const unsigned char *buf, AGF &out)
constexpr uint32_t XFS_AGFL_MAGIC_V5
uint16_t be16(const unsigned char *p)
constexpr uint32_t XFS_AGI_MAGIC_V4
constexpr uint32_t XFS_AGI_MAGIC_V5
constexpr uint16_t XFS_SB_VERSION_ATTRBIT
constexpr uint32_t XFS_SB_FEAT_RO_COMPAT_INOBTCNT
bool parse_superblock(const unsigned char *buf, Superblock &out)
constexpr uint16_t XFS_SB_VERSION_NLINKBIT
constexpr uint32_t XFS_ABTC_MAGIC_V5
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_NEEDSREPAIR
constexpr uint16_t XFS_SB_VERSION_ALIGNBIT
constexpr uint32_t XFS_FIBT_MAGIC_V5
constexpr uint16_t XFS_SB_VERSION_SECTORBIT
constexpr uint32_t XFS_ABTC_MAGIC_V4
constexpr uint16_t XFS_SB_VERSION_DIRV2BIT
constexpr uint16_t XFS_SB_VERSION_5
constexpr uint32_t XFS_AGF_MAGIC_V5
InodeAddress crack_inode(uint64_t ino, const Superblock &sb)
constexpr uint32_t XFS_SB_FEAT_RO_COMPAT_RMAPBT
uint64_t be64(const unsigned char *p)
bool parse_agi(const unsigned char *buf, AGI &out)
constexpr uint32_t XFS_BMAP_MAGIC_V5
constexpr uint32_t XFS_ABTB_MAGIC_V5
constexpr uint16_t XFS_SB_VERSION_EXTFLGBIT
constexpr uint32_t XFS_DINODE_MAGIC
uint32_t be32(const unsigned char *p)
constexpr uint32_t XFS_SB_MAGIC
constexpr uint32_t XFS_FIBT_MAGIC_V4
constexpr uint16_t XFS_SB_VERSION_4
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_SPINODES
constexpr uint32_t XFS_SB_FEAT_RO_COMPAT_FINOBT
constexpr uint32_t XFS_AGF_MAGIC_V4
constexpr uint16_t XFS_SB_VERSION_DALIGNBIT
constexpr uint32_t XFS_IBT_MAGIC_V5
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_META_UUID
constexpr uint32_t XFS_BMAP_MAGIC_V4
constexpr uint32_t XFS_IBT_MAGIC_V4
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_FTYPE
constexpr uint32_t XFS_SB_FEAT_RO_COMPAT_REFLINK
constexpr uint32_t XFS_SB_FEAT_INCOMPAT_NREXT64
constexpr uint16_t XFS_SB_VERSION_LOGV2BIT
constexpr uint16_t XFS_SB_VERSION_BORGBIT
constexpr uint16_t XFS_SB_VERSION_MOREBITSBIT
uint64_t volume_size_bytes() const
uint32_t features_incompat
std::string label() const
unsigned format_version() const
std::array< uint8_t, 16 > meta_uuid
uint32_t features_log_incompat
std::array< char, 12 > fname
std::array< uint8_t, 16 > uuid
uint32_t features_ro_compat
std::vector< AGContext > ag