Clay, my check_crc.py script didn't fully capture is_invalid_fragment_header; in particular, it didn't include the version check [1], which would have caused your first frag (which seems to have been written by libec 1.0.9) to skip the checksumming. My understanding is that pre-1.2.0 libec would always store 0 for the checksum, which matches your observations.
chksum_type applies to *fragment data* checksumming; it's only relevant insofar as it would use the same implementation of crc32 as the metadata checksumming. It defaults to 1 (no checksum is stored) and though pyeclib exposes a way to change it [2], Swift never uses it [3]. Instead, Swift relies on its existing MD5-based integrity checks.
Clay, my check_crc.py script didn't fully capture is_invalid_ fragment_ header; in particular, it didn't include the version check [1], which would have caused your first frag (which seems to have been written by libec 1.0.9) to skip the checksumming. My understanding is that pre-1.2.0 libec would always store 0 for the checksum, which matches your observations.
chksum_type applies to *fragment data* checksumming; it's only relevant insofar as it would use the same implementation of crc32 as the metadata checksumming. It defaults to 1 (no checksum is stored) and though pyeclib exposes a way to change it [2], Swift never uses it [3]. Instead, Swift relies on its existing MD5-based integrity checks.
[1] https:/ /github. com/openstack/ liberasurecode/ blob/1. 5.0/src/ erasurecode. c#L1092- L1094 /github. com/openstack/ pyeclib/ blob/1. 5.0/pyeclib/ ec_iface. py#L186- L192 /github. com/openstack/ swift/blob/ 2.14.0/ swift/common/ storage_ policy. py#L482- L484
[2] https:/
[3] https:/