Re: [PATCH] block: pass correct seed to integrity metadata generation function

From: Martin K. Petersen
Date: Wed Jan 07 2015 - 19:19:16 EST


>>>>> "Sam" == Sam Bradshaw (sbradshaw) <sbradshaw@xxxxxxxxxx> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/