[PATCH 1/2] nvme: introduce struct nvme_request
Christoph Hellwig
hch at lst.de
Thu Oct 27 05:30:27 PDT 2016
On Thu, Oct 27, 2016 at 12:24:24PM +0300, Sagi Grimberg wrote:
>> +struct nvme_request {
>> + struct nvme_command *cmd;
>> + union nvme_result result;
>> +};
>
> I sorta agree with James, can we not enforce a "hidden assumption"
> of the core on how the transport drivers structures are built?
We have to, as this is the structure passed between the core and the
the drivers.
>> +static inline struct nvme_request *nvme_req(struct request *req)
>> +{
>> + return blk_mq_rq_to_pdu(req);
>> +}
>
> Maybe this can be a ctrl->ops->nvme_req() instead?
Why add indirections if we can avoid it? Especially if we're ever
going to use the passthrough in a performance path (e.g. the target)
these indirect calls just to get an address will hurt us.
And it's not like requiring a common structure at the beginning is
unusual - this is how every Linux fs treats the inode structure.
More information about the Linux-nvme
mailing list