A method for improving the reliability of host data stored on Fiber
Channel attached storage subsystems by performing end-to-end data
integrity checks. When a read or write operation is initiated, an initial
checksum for data in the read/write operation is generated and associated
with the data, wherein the association exists through a plurality of
layers of software and attached storage subsystems. The initial checksum
is passed with the data in the read/write path. When a layer of software
in the read/write path receives the initial checksum and data, the layer
performs an integrity check of the data, which includes generating
another checksum and comparing it to the initial checksum. If the
checksums do not match, the read/write operation fails and the error is
logged. If the checksums match, the integrity check is repeated through
each layer in the read/write path to enable detecting data corruption at
the point of source.