linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Keith Busch <kbusch@meta.com>
Cc: linux-block@vger.kernel.org, linux-nvme@lists.infradead.org,
	hch@lst.de, axboe@kernel.dk, joshi.k@samsung.com,
	Keith Busch <kbusch@kernel.org>
Subject: Re: [PATCHv5 6/8] blk-mq-dma: add support for mapping integrity metadata
Date: Sun, 10 Aug 2025 16:16:43 +0200	[thread overview]
Message-ID: <20250810141643.GG4262@lst.de> (raw)
In-Reply-To: <20250808155826.1864803-7-kbusch@meta.com>

On Fri, Aug 08, 2025 at 08:58:24AM -0700, Keith Busch wrote:
> From: Keith Busch <kbusch@kernel.org>
> 
> Provide integrity metadata helpers equivalent to the data payload
> helpers for iterating a request for dma setup.

Can you please also convert the SG mapping helpers to use the low-level
iterator first like I've done for the data path?  That ensures we have
less code to maintain, common behavior and also smaller kernel binaries.

> +static bool __blk_map_iter_next(struct blk_map_iter *iter)
> +{
> +	if (iter->iter.bi_size)
> +		return true;
> +	if (!iter->bio || !iter->bio->bi_next)
> +		return false;
> +
> +	iter->bio = iter->bio->bi_next;
> +#ifdef CONFIG_BLK_DEV_INTEGRITY
> +	if (iter->is_integrity) {
> +		iter->iter = iter->bio->bi_integrity->bip_iter;
> +		iter->bvec = iter->bio->bi_integrity->bip_vec;
> +		return true;
> +	}
> +#endif
> +	iter->iter = iter->bio->bi_iter;
> +	iter->bvec = iter->bio->bi_io_vec;
> +	return true;

I wonder if we should use the bio_integrity() that would introduce two
(probably optimized down to one by the compiler) extra branches for the 
integrity mapping that are easily predicted, but make the think look much
nicer as it would kill the ifdef and the ugly structure around it:

	if (iter->is_integrity) {
		iter->iter = bio_integrity(iter->bio)->bip_iter;
		iter->bvec = bio_integrity(iter->bio)->bip_vec;
	} else {
		iter->iter = iter->bio->bi_iter;
		iter->bvec = iter->bio->bi_io_vec;
	}

	return true;

> +#ifdef CONFIG_BLK_DEV_INTEGRITY
> +bool blk_rq_integrity_dma_map_iter_start(struct request *req,
> +		struct device *dma_dev,  struct dma_iova_state *state,
> +		struct blk_dma_iter *iter)

Can you please add a kerneldoc comment here, which could be easily
adapter from the data mapping path.

> +bool blk_rq_integrity_dma_map_iter_next(struct request *req,
> +               struct device *dma_dev, struct blk_dma_iter *iter)

Same here.



  reply	other threads:[~2025-08-10 14:16 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-08 15:58 [PATCHv5 0/8] blk dma iter for integrity metadata Keith Busch
2025-08-08 15:58 ` [PATCHv5 1/8] blk-mq-dma: introduce blk_map_iter Keith Busch
2025-08-10 14:04   ` Christoph Hellwig
2025-08-11 13:30     ` Keith Busch
2025-08-11 14:05       ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 2/8] blk-mq-dma: provide the bio_vec list being iterated Keith Busch
2025-08-10 14:07   ` Christoph Hellwig
2025-08-11 17:04     ` Keith Busch
2025-08-10 14:09   ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 3/8] blk-mq-dma: require unmap caller provide p2p map type Keith Busch
2025-08-10 14:08   ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 4/8] blk-mq: remove REQ_P2PDMA flag Keith Busch
2025-08-10 14:08   ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 5/8] blk-mq-dma: move common dma start code to a helper Keith Busch
2025-08-10 14:10   ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 6/8] blk-mq-dma: add support for mapping integrity metadata Keith Busch
2025-08-10 14:16   ` Christoph Hellwig [this message]
2025-08-08 15:58 ` [PATCHv5 7/8] nvme-pci: create common sgl unmapping helper Keith Busch
2025-08-10 14:21   ` Christoph Hellwig
2025-08-08 15:58 ` [PATCHv5 8/8] nvme-pci: convert metadata mapping to dma iter Keith Busch
2025-08-10 14:27   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250810141643.GG4262@lst.de \
    --to=hch@lst.de \
    --cc=axboe@kernel.dk \
    --cc=joshi.k@samsung.com \
    --cc=kbusch@kernel.org \
    --cc=kbusch@meta.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).