On Thu, Jun 24, 2021 at 06:41:52PM -0400, Martin K. Petersen wrote: > > Linus, > > > I also worry that this "raw compressed data" thing isn't the only > > thing people will want to do. I could easily see some kind of > > "end-to-end CRC read/write" where the user passes in not just the > > data, but also checksums for it to validate it (maybe because you're > > doing a file copy and had the original checksums, but also maybe > > because user space simply has a known good copy and doesn't want > > errors re-introduced due to memory corruption). > > We already support passing CRCs down to be validated by the hardware for > both NVMe and SCSI. This currently only works from the block layer > down. When enabled, the checksums are generated by the block layer for > writes and the data is validated against the checksums sent by the > storage on reads. > > Over the years various attempts at adding support for passing the > checksum buffers in from userland have failed for exactly the reasons > outlined in this thread (Joel, Darrick, Bob). Would love to have a > generic way of passing this kind of information... Does it make any kind of sense to talk about doing this for buffered I/O, given that we can't generate them for (eg) mmaped files? Or does this only make sense to pass in for O_DIRECT accesses?