Because the disk driver may be computing checksum of the data before submitting it to the disk and if you change the data after the checksum is computed but before the DMA transfer is done, the checksum will not match.
Thanks again!
BTW, how to know if my disk support data integrity. My harddisk spec said it has this feature, but my linux kernel with integrity supported don't have /sys/block/sdx/integrity.
The feature you are looking for is called DIF/DIX IIRC and not many disks support it.
Oh, that's bad. Looks in block layer will merge or find out the shared checksum type. So if 2 kind of different disk in system without share checksum type. that could cause each of disk lose data integrity checking?