From: Jens Axboe <axboe@kernel.dk>
To: Kanchan Joshi <joshi.k@samsung.com>,
hch@lst.de, kbusch@kernel.org, asml.silence@gmail.com
Cc: io-uring@vger.kernel.org, linux-nvme@lists.infradead.org,
linux-block@vger.kernel.org, gost.dev@samsung.com,
Anuj Gupta <anuj20.g@samsung.com>
Subject: Re: [PATCH for-next v3 3/4] block: add helper to map bvec iterator for passthrough
Date: Fri, 2 Sep 2022 17:14:41 -0600 [thread overview]
Message-ID: <5dfa132d-de5a-effa-d1bd-a4f948e36cdf@kernel.dk> (raw)
In-Reply-To: <20220902151657.10766-4-joshi.k@samsung.com>
On 9/2/22 9:16 AM, Kanchan Joshi wrote:
> Add blk_rq_map_user_bvec which maps the bvec iterator into a bio and
> places that into the request.
> This helper is to be used in nvme for uring-passthrough with
> fixed-buffer.
>
> Signed-off-by: Kanchan Joshi <joshi.k@samsung.com>
> Signed-off-by: Anuj Gupta <anuj20.g@samsung.com>
> ---
> block/blk-map.c | 71 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/blk-mq.h | 1 +
> 2 files changed, 72 insertions(+)
>
> diff --git a/block/blk-map.c b/block/blk-map.c
> index f3768876d618..0f7dc568e34b 100644
> --- a/block/blk-map.c
> +++ b/block/blk-map.c
> @@ -612,6 +612,77 @@ int blk_rq_map_user(struct request_queue *q, struct request *rq,
> }
> EXPORT_SYMBOL(blk_rq_map_user);
>
> +/* Prepare bio for passthrough IO given an existing bvec iter */
> +int blk_rq_map_user_bvec(struct request *rq, struct iov_iter *iter)
> +{
> + struct request_queue *q = rq->q;
> + size_t iter_count, nr_segs;
> + struct bio *bio;
> + struct bio_vec *bv, *bvec_arr, *bvprvp = NULL;
> + struct queue_limits *lim = &q->limits;
> + unsigned int nsegs = 0, bytes = 0;
> + int ret, i;
> +
> + iter_count = iov_iter_count(iter);
> + nr_segs = iter->nr_segs;
> +
> + if (!iter_count || (iter_count >> 9) > queue_max_hw_sectors(q))
> + return -EINVAL;
> + if (nr_segs > queue_max_segments(q))
> + return -EINVAL;
> + if (rq->cmd_flags & REQ_POLLED) {
> + blk_opf_t opf = rq->cmd_flags | REQ_ALLOC_CACHE;
> +
> + /* no iovecs to alloc, as we already have a BVEC iterator */
> + bio = bio_alloc_bioset(NULL, 0, opf, GFP_KERNEL,
> + &fs_bio_set);
> + if (!bio)
> + return -ENOMEM;
> + } else {
> + bio = bio_kmalloc(0, GFP_KERNEL);
> + if (!bio)
> + return -ENOMEM;
> + bio_init(bio, NULL, bio->bi_inline_vecs, 0, req_op(rq));
> + }
I think this should be a helper at this point, as it's the same
duplicated code we have in the normal map path.
--
Jens Axboe
next prev parent reply other threads:[~2022-09-02 23:24 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20220902152701epcas5p1d4aca8eebc90fb96ac7ed5a8270816cf@epcas5p1.samsung.com>
2022-09-02 15:16 ` [PATCH for-next v3 0/4] fixed-buffer for uring-cmd/passthrough Kanchan Joshi
2022-09-02 15:16 ` [PATCH for-next v3 1/4] io_uring: introduce io_uring_cmd_import_fixed Kanchan Joshi
2022-09-02 15:16 ` [PATCH for-next v3 2/4] io_uring: introduce fixed buffer support for io_uring_cmd Kanchan Joshi
2022-09-02 23:13 ` Jens Axboe
2022-09-02 15:16 ` [PATCH for-next v3 3/4] block: add helper to map bvec iterator for passthrough Kanchan Joshi
2022-09-02 23:14 ` Jens Axboe [this message]
2022-09-02 15:16 ` [PATCH for-next v3 4/4] nvme: wire up fixed buffer support for nvme passthrough Kanchan Joshi
2022-09-02 16:06 ` [PATCH for-next v3 0/4] fixed-buffer for uring-cmd/passthrough Jens Axboe
2022-09-02 16:32 ` Jens Axboe
2022-09-02 18:46 ` Kanchan Joshi
2022-09-02 19:32 ` Jens Axboe
2022-09-02 21:25 ` Jens Axboe
2022-09-03 9:34 ` Kanchan Joshi
2022-09-03 17:00 ` Jens Axboe
2022-09-04 17:01 ` Kanchan Joshi
2022-09-04 20:17 ` Jens Axboe
2022-09-05 5:52 ` Kanchan Joshi
2022-09-05 17:48 ` Jens Axboe
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=5dfa132d-de5a-effa-d1bd-a4f948e36cdf@kernel.dk \
--to=axboe@kernel.dk \
--cc=anuj20.g@samsung.com \
--cc=asml.silence@gmail.com \
--cc=gost.dev@samsung.com \
--cc=hch@lst.de \
--cc=io-uring@vger.kernel.org \
--cc=joshi.k@samsung.com \
--cc=kbusch@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.