Re: sysfs integrity fields use

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 25, 2025 at 10:23:49AM +0100, Milan Broz wrote:
> Hi,
> 
> I tried to add some support for using devices with PI/DIF metadata
> For an NVMe drive, reformatted to 4096 + 64 profile, I see this:

Based on everything below you have no formatted it with PI and you
also don't plan to use PI, just plain non-integrity metadata.

> 
> - /sys/block/<disk>/integrity/device_is_integrity_capable
>   Contains 0 (?)
>   According to docs, this field
>  "Indicates whether a storage device is capable of storing integrity metadata.
>  Set if the device is T10 PI-capable."

this is only 1 if protection information is enabled, and 0
for non-PI metadata.

> - /sys/block/<disk>/integrity/tag_size
>   Contains 0 (?)
>   According to docs, this is "Number of bytes of integrity tag space
>   available per 512 bytes of data."
>   (I think 512 bytes is incorrect; it should be sector size, or perhaps
>    value in protection_interval_bytes, though.)

Yes, it should be an integrity interval.  Which for all current drivers
is the LBA size.  And the tag_size is the size of the PI metadata, so
0 is expected.

> Then we have new (undocumented) value for NVMe in
> - /sys/block/<nvme>/integrity/metadata_bytes
>   This contains the correct 64.

Yes, this contains the full size of the metadata.  And besides
documenting it we should probably also lift it to the block layer.

> Anyway, when I try to use it (for authentication tags in dm-crypt), it works.
> 
> Should tag_size and device_is_integrity_capable be set even for the "nop" format?
> Is it a bug or a feature? :-)

It is expected.  The only issue is that the block support for metadata
is called integrity all over because it was initially added for PI only
and then extended for non-PI metadata, which makes things a little
confusing.

> If not, what is the correct way to read per-sector metadata size (not only for NVMe
> as metadata_bytes is not available for other block devices)?

Right now the nvme specific attribute is the only way.





[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux