[PATCH V3 2/6] nvme-core: split nvme_alloc_request()
Christoph Hellwig
hch at lst.de
Tue Nov 3 13:24:44 EST 2020
On Wed, Oct 21, 2020 at 06:02:30PM -0700, Chaitanya Kulkarni wrote:
> +static inline unsigned int nvme_req_op(struct nvme_command *cmd)
> +{
> + return nvme_is_write(cmd) ? REQ_OP_DRV_OUT : REQ_OP_DRV_IN;
> +}
Why is this added here while nvme_init_req_from_cmd is added in a prep
patch? I'm actually fine either way, but doing it differnetly for the
different helpers is a little inconsistent.
> +
> +struct request *nvme_alloc_request_qid_any(struct request_queue *q,
> + struct nvme_command *cmd, blk_mq_req_flags_t flags)
I'd call this just nvme_alloc_request to keep the short name for the
normal use case.
> + struct request *req;
> +
> + req = blk_mq_alloc_request(q, nvme_req_op(cmd), flags);
> + if (unlikely(IS_ERR(req)))
> + return req;
> +
> + nvme_init_req_from_cmd(req, cmd);
> + return req;
Could be simplified to:
req = blk_mq_alloc_request(q, nvme_req_op(cmd), flags);
if (!IS_ERR(req))
nvme_init_req_from_cmd(req, cmd);
return req;
Note that IS_ERR already contains an embedded unlikely().
> +static struct request *nvme_alloc_request_qid(struct request_queue *q,
> struct nvme_command *cmd, blk_mq_req_flags_t flags, int qid)
> {
> struct request *req;
>
> + req = blk_mq_alloc_request_hctx(q, nvme_req_op(cmd), flags,
> + qid ? qid - 1 : 0);
> if (IS_ERR(req))
> return req;
>
> nvme_init_req_from_cmd(req, cmd);
> return req;
Same here.
> }
> -EXPORT_SYMBOL_GPL(nvme_alloc_request);
I think nvme_alloc_request_qid needs to be exported as well.
FYI, this also doesn't apply to the current nvme-5.10 tree any more.
More information about the Linux-nvme
mailing list