#include "superblocks.h"
struct sqsh_super_block {
- uint32_t s_magic;
- uint32_t inodes;
- uint32_t bytes_used_2;
- uint32_t uid_start_2;
- uint32_t guid_start_2;
- uint32_t inode_table_start_2;
- uint32_t directory_table_start_2;
- uint16_t s_major;
- uint16_t s_minor;
+ uint32_t magic;
+ uint32_t inode_count;
+ uint32_t mod_time;
+ uint32_t block_size;
+ uint32_t frag_count;
+ uint16_t compressor;
+ uint16_t block_log;
+ uint16_t flags;
+ uint16_t id_count;
+ uint16_t version_major;
+ uint16_t version_minor;
+ uint64_t root_inode;
+ uint64_t bytes_used;
+ uint64_t id_table;
+ uint64_t xattr_table;
+ uint64_t inode_table;
+ uint64_t dir_table;
+ uint64_t frag_table;
+ uint64_t export_table;
} __attribute__((packed));
static int probe_squashfs(blkid_probe pr, const struct blkid_idmag *mag)
if (!sq)
return errno ? -errno : 1;
- vermaj = le16_to_cpu(sq->s_major);
- vermin = le16_to_cpu(sq->s_minor);
+ vermaj = le16_to_cpu(sq->version_major);
+ vermin = le16_to_cpu(sq->version_minor);
if (vermaj < 4)
return 1;
return errno ? -errno : 1;
if (strcmp(mag->magic, "sqsh") == 0) {
- vermaj = be16_to_cpu(sq->s_major);
- vermin = be16_to_cpu(sq->s_minor);
+ vermaj = be16_to_cpu(sq->version_major);
+ vermin = be16_to_cpu(sq->version_minor);
endianness = BLKID_ENDIANNESS_BIG;
} else {
- vermaj = le16_to_cpu(sq->s_major);
- vermin = le16_to_cpu(sq->s_minor);
+ vermaj = le16_to_cpu(sq->version_major);
+ vermin = le16_to_cpu(sq->version_minor);
endianness = BLKID_ENDIANNESS_LITTLE;
}