Block Integrity Rq Count Question

Keith Busch keith.busch at intel.com
Mon Dec 11 16:00:48 PST 2017


On Mon, Dec 11, 2017 at 05:54:35PM +0000, Jeffrey Lien wrote:
> Keith,
> Your comment below makes sense, but I still have a question.   Where in the driver (or maybe it's block layer) is metadata pointer allocated?   I can't find where that happens in the nvme driver so does this happen in the block layer?   And how do we control whether or not it's 1 contiguous buffer or not?

The function 'nvme_init_integrity' sets up our metadata
profile and requests single metadata payload segments with
'blk_queue_max_integrity_segments(disk->queue, 1)', so the fact
that you're getting multiple segments in your payload suggests some
inappropriate merging is going on in the block layer. It looks like
blk_integrity_merge_{bio,rq} are doing the right thing.



More information about the Linux-nvme mailing list