On my "bad" frags it doesn't look like there's any checksum information at all:
00000000 03 00 00 00 f5 07 00 00 00 00 00 00 de 17 00 00 |....?.......?...| 00000010 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 04 00 0d 02 00 cc 5e 0c 0b 09 |...........?^...| 00000040 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000050 4a 78 20 53 2d 65 25 78 2d 60 09 3b 27 72 24 51 |Jx S-e%x-`.;'r$Q|
compared to
00000000 02 00 00 00 00 00 08 00 00 00 00 00 00 00 10 00 |................| 00000010 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................| 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000030 00 00 00 00 00 00 04 00 0d 02 00 cc 5e 0c 0b 00 |............^...| 00000040 04 01 00 3e 17 51 ec 00 00 00 00 00 00 00 00 00 |...>.Q..........| 00000050 cb fd 36 8e 4a d7 1e f8 3d 9a 39 8c 22 90 25 8e |..6.J...=.9.".%.|
so on my bad node it's not possible no matter what the LD_PRELOAD to get the checksum to come back valid...
What's weird is that depending on the LD_PRELOAD the check_crc gets a different computed meta_crc:
ubuntu@saio:/vagrant/.scratch$ LD_PRELOAD=/usr/local/lib/liberasurecode.so.1.4.0 ./check_crc.py /srv/node3/sdb3/objects-1/589/c2b/93464008f434853ad9b74c8c5381ac2b/1498598728.24878#2#d.data 3985286910 3964737342 '>\x17Q\xec' checksum mismatch! ubuntu@saio:/vagrant/.scratch$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libz.so ./check_crc.py /srv/node3/sdb3/objects-1/589/c2b/93464008f434853ad9b74c8c5381ac2b/1498598728.24878#2#d.data 3964737342 3964737342 '>\x17Q\xec' first frag checksum OK
^ different computed value matches stable recorded version depending on preload
root@swift-test-02:~# LD_PRELOAD=/usr/lib/liberasurecode.so.1.4.0 /home/swiftstack/check_crc.py /srv/node/d11/objects-2/398/465/6381800fa3e800cd36d6ea5bf4fd6465/1458349982.69822#3.data 283779307 0 '\x00\x00\x00\x00' checksum mismatch! root@swift-test-02:~# LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libz.so /home/swiftstack/check_crc.py /srv/node/d11/objects-2/398/465/6381800fa3e800cd36d6ea5bf4fd6465/1458349982.69822#3.data 2055872539 0 '\x00\x00\x00\x00' checksum mismatch!
^ different computed value never matches stable (empty) recorded version regardless of preload
On my "bad" frags it doesn't look like there's any checksum information at all:
00000000 03 00 00 00 f5 07 00 00 00 00 00 00 de 17 00 00 |....?.......?...|
00000010 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 04 00 0d 02 00 cc 5e 0c 0b 09 |...........?^...|
00000040 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 4a 78 20 53 2d 65 25 78 2d 60 09 3b 27 72 24 51 |Jx S-e%x-`.;'r$Q|
compared to
00000000 02 00 00 00 00 00 08 00 00 00 00 00 00 00 10 00 |................|
00000010 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 04 00 0d 02 00 cc 5e 0c 0b 00 |............^...|
00000040 04 01 00 3e 17 51 ec 00 00 00 00 00 00 00 00 00 |...>.Q..........|
00000050 cb fd 36 8e 4a d7 1e f8 3d 9a 39 8c 22 90 25 8e |..6.J...=.9.".%.|
so on my bad node it's not possible no matter what the LD_PRELOAD to get the checksum to come back valid...
What's weird is that depending on the LD_PRELOAD the check_crc gets a different computed meta_crc:
ubuntu@ saio:/vagrant/ .scratch$ LD_PRELOAD= /usr/local/ lib/liberasurec ode.so. 1.4.0 ./check_crc.py /srv/node3/ sdb3/objects- 1/589/c2b/ 93464008f434853 ad9b74c8c5381ac 2b/1498598728. 24878#2# d.data saio:/vagrant/ .scratch$ LD_PRELOAD= /usr/lib/ x86_64- linux-gnu/ libz.so ./check_crc.py /srv/node3/ sdb3/objects- 1/589/c2b/ 93464008f434853 ad9b74c8c5381ac 2b/1498598728. 24878#2# d.data
3985286910 3964737342 '>\x17Q\xec'
checksum mismatch!
ubuntu@
3964737342 3964737342 '>\x17Q\xec'
first frag checksum OK
^ different computed value matches stable recorded version depending on preload
root@swift- test-02: ~# LD_PRELOAD= /usr/lib/ liberasurecode. so.1.4. 0 /home/swiftstac k/check_ crc.py /srv/node/ d11/objects- 2/398/465/ 6381800fa3e800c d36d6ea5bf4fd64 65/1458349982. 69822#3. data test-02: ~# LD_PRELOAD= /usr/lib/ x86_64- linux-gnu/ libz.so /home/swiftstac k/check_ crc.py /srv/node/ d11/objects- 2/398/465/ 6381800fa3e800c d36d6ea5bf4fd64 65/1458349982. 69822#3. data
283779307 0 '\x00\x00\x00\x00'
checksum mismatch!
root@swift-
2055872539 0 '\x00\x00\x00\x00'
checksum mismatch!
^ different computed value never matches stable (empty) recorded version regardless of preload