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