]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: bcachefs: add crc64 checksum support
authorThomas Weißschuh <thomas@t-8ch.de>
Tue, 13 Sep 2022 07:50:51 +0000 (09:50 +0200)
committerThomas Weißschuh <thomas@t-8ch.de>
Thu, 19 Jan 2023 19:17:25 +0000 (19:17 +0000)
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
libblkid/src/superblocks/bcache.c

index 83c9ba276b7e81641f5b812c74e16232d8cb5d92..3bb909a4d93b678eea11559703e459a94ec24dbd 100644 (file)
@@ -52,10 +52,12 @@ struct bcachefs_sb_field_members {
 enum bcachefs_sb_csum_type {
        BCACHEFS_SB_CSUM_TYPE_NONE = 0,
        BCACHEFS_SB_CSUM_TYPE_CRC32C = 1,
+       BCACHEFS_SB_CSUM_TYPE_CRC64 = 2,
 };
 
 union bcachefs_sb_csum {
        uint32_t crc32c;
+       uint64_t crc64;
        uint8_t raw[16];
 } __attribute__((packed));
 
@@ -205,6 +207,10 @@ static int bcachefs_validate_checksum(blkid_probe pr, const struct bcachefs_supe
                        uint32_t crc = crc32c(~0LL, checksummed_data_start, checksummed_data_size) ^ ~0LL;
                        return blkid_probe_verify_csum(pr, crc, le32_to_cpu(bcs->csum.crc32c));
                }
+               case BCACHEFS_SB_CSUM_TYPE_CRC64: {
+                       uint64_t crc = ul_crc64_we(checksummed_data_start, checksummed_data_size);
+                       return blkid_probe_verify_csum(pr, crc, le64_to_cpu(bcs->csum.crc64));
+               }
                default:
                        DBG(LOWPROBE, ul_debug("bcachefs: unknown checksum type %d, ignoring.", checksum_type));
                        return 1;