Messages in this thread | | | Subject | Re: [PATCH] block: pass correct seed to integrity metadata generation function | From | "Martin K. Petersen" <> | Date | Wed, 07 Jan 2015 19:19:04 -0500 |
| |
>>>>> "Sam" == Sam Bradshaw (sbradshaw) <sbradshaw@micron.com> writes:
Sam> Yes.
The seed is just a seed. We happen to set it to the (block layer) sector number if nothing else is provided but it's essentially just an incrementing counter starting at an arbitrary value chosen by the caller.
Since an I/O may get remapped many times as block devices are stacked (DM, MD, stripe splits, partition offset shifts, etc.) the seed is not expected to match the LBA on the storage device. That is almost never the case.
In SCSI we do a remapping pass before submitting a WRITE or upon completion of a READ. You will have to do the same for NVMe.
It was done this way to avoid remapping the ref tag several times. We adjust the seed as the I/O gets sliced and diced and only map the PI pages once to do a single traversal at the bottom of the stack.
For next gen devices we simply pass the seed to the hardware and let it handle the remapping. This saves us having to map the PI pages and pull them through the cache.
-- Martin K. Petersen Oracle Linux Engineering
| |