Skip to content
  • Matt Benjamin's avatar
    ee03b505
    rgw:cksum: implement crc64nvme and combined 32- and 64-bit CRCs · ee03b505
    Matt Benjamin authored
    * internally compensate for at-rest byteswapped crc64 representation (e.g., before combine step)
    * generalize Cksum crc api for 32bit and 64bit crcs, other cleanup
    * prototype abstract cksum::Combiner workflow
    * add support for forward and backward handling of composite vs full object checksums
      by marking the composites and the update flag day
    * clean up checksum formatting and checksum type reporting
    * add unit tests for Combiner interface
    * validate and track requested checksum type (i.e., composite or full), plus
      unit test fixture for combinations of full matrix of cksum types
    * doh.  GET/HEAD checksums are in headers
    * add crcany license to COPYING
    * return ChecksumType as header in GET/HEAD
    
        Found by Casey in review
    
    * avoid fmt of char* null when no checksum header supplied
    
        A cksum_hdr_t(nullptr, nullptr) results in this case, and is intended,
        but its components obviously can't be presented to std::format unless
        cast to a safe pointer type.
    
    * fail checksum mismatch with BadDigest
    
        When uploading an S3 object with an invalid checksum, the return code
        should be BadDigest to mirror more closely the AWS S3 implementation.
        See: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
    
        Fixes: https://tracker.ceph.com/issues/70614
    
    
    
        Reported by Alex Wojno <awojno@bloomberg.net>
    
    * fix comparison and display of composite checksums
    
    A string comparision bounds error and a bitmask comparison
        error are fixed.
    
    * fix build on centos9
    
    On gcc(?13?) we can't declare rgw::cksum::FLAG_NONE
        and also rgw::cksum::Cksum::FlAG_NONE.
    
        SAD!!
    
    * include <variant> invariantly
    
    * fix checksum type return from complete-multipart
    
        This one is in the XML response
    
    * aieee, don't leak Combiners
    
       Use unique_ptr to polymorphic type...correctly.
    
    Signed-off-by: default avatarMatt Benjamin <mbenjamin@redhat.com>
    ee03b505
    rgw:cksum: implement crc64nvme and combined 32- and 64-bit CRCs
    Matt Benjamin authored
    * internally compensate for at-rest byteswapped crc64 representation (e.g., before combine step)
    * generalize Cksum crc api for 32bit and 64bit crcs, other cleanup
    * prototype abstract cksum::Combiner workflow
    * add support for forward and backward handling of composite vs full object checksums
      by marking the composites and the update flag day
    * clean up checksum formatting and checksum type reporting
    * add unit tests for Combiner interface
    * validate and track requested checksum type (i.e., composite or full), plus
      unit test fixture for combinations of full matrix of cksum types
    * doh.  GET/HEAD checksums are in headers
    * add crcany license to COPYING
    * return ChecksumType as header in GET/HEAD
    
        Found by Casey in review
    
    * avoid fmt of char* null when no checksum header supplied
    
        A cksum_hdr_t(nullptr, nullptr) results in this case, and is intended,
        but its components obviously can't be presented to std::format unless
        cast to a safe pointer type.
    
    * fail checksum mismatch with BadDigest
    
        When uploading an S3 object with an invalid checksum, the return code
        should be BadDigest to mirror more closely the AWS S3 implementation.
        See: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
    
        Fixes: https://tracker.ceph.com/issues/70614
    
    
    
        Reported by Alex Wojno <awojno@bloomberg.net>
    
    * fix comparison and display of composite checksums
    
    A string comparision bounds error and a bitmask comparison
        error are fixed.
    
    * fix build on centos9
    
    On gcc(?13?) we can't declare rgw::cksum::FLAG_NONE
        and also rgw::cksum::Cksum::FlAG_NONE.
    
        SAD!!
    
    * include <variant> invariantly
    
    * fix checksum type return from complete-multipart
    
        This one is in the XML response
    
    * aieee, don't leak Combiners
    
       Use unique_ptr to polymorphic type...correctly.
    
    Signed-off-by: default avatarMatt Benjamin <mbenjamin@redhat.com>
This project is licensed under the GNU Lesser General Public License v2.1 only. Learn more
Loading