From: Thomas Weißschuh Date: Tue, 29 Nov 2022 02:41:37 +0000 (+0100) Subject: libblkid: squashfs: add more superblock fields X-Git-Tag: v2.39-rc1~401 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b9f19aceb58d6805b779d05d50a254099518f5bd;p=thirdparty%2Futil-linux.git libblkid: squashfs: add more superblock fields Also rename the existing fields to match the documentation. We use the Version 4 fields because we will use those in a future commit. Field names taken from https://dr-emann.github.io/squashfs/squashfs.html#_the_superblock --- diff --git a/libblkid/src/superblocks/squashfs.c b/libblkid/src/superblocks/squashfs.c index bd63fbd63c..8304c7d790 100644 --- a/libblkid/src/superblocks/squashfs.c +++ b/libblkid/src/superblocks/squashfs.c @@ -17,15 +17,25 @@ #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) @@ -38,8 +48,8 @@ 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; @@ -60,12 +70,12 @@ static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag) 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; }