[RFC 0/3] Btrfs checksum offload
Christoph Hellwig
hch at lst.de
Wed Jan 29 07:35:24 PST 2025
On Wed, Jan 29, 2025 at 07:32:04PM +0530, Kanchan Joshi wrote:
> End-to-end data protection (E2EDP)-capable drives require the transfer
> of integrity metadata (PI).
> This is currently handled by the block layer, without filesystem
> involvement/awareness.
> The block layer attaches the metadata buffer, generates the checksum
> (and reftag) for write I/O, and verifies it during read I/O.
That's not quite true. The block layer automatically adds a PI
payload if not is added by the caller. The caller can add it's own
PI payload, but currently no file system does this - only the block
device fops as of 6.13 and the nvme and scsi targets. But file systems
can do that, and I have (hacky and outdated patches) wiring this up
in XFS.
Note that the "auto-PI" vs "caller-PI" isn't very cleanly split
currently, which causes some confusion. I have a series almost
ready to clean that up a bit.
> There is value in avoiding Copy-on-write (COW) checksum tree on
> a device that can anyway store checksums inline (as part of PI).
Yes.
> This patch series: (a) adds checksum offload awareness to the
> block layer (patch #1),
I've skipped over the patches and don't understand what this offload
awareness concept does compared the file system simply attaching PI
metadata.
> (c) introduces an opt-in (datasum_offload mount option) in Btrfs to
> apply checksum offload for data (patch #3).
Not really important for an initial prototype, but incompatible on-disk
format changes like this need feature flags and not just a mount
option.
More information about the Linux-nvme
mailing list