> @@ -1088,6 +1088,13 @@ static int mtip_quiesce_io(struct mtip_port *port,
> unsigned long timeout)
> return -EFAULT;
> }
>
> +struct mtip_int_cmd {
> + int fis_len;
> + dma_addr_t buffer;
> + int buf_len;
> + u32 opts;
> +};
I know passing the dma_addr is probably the easier conversion for now,
but using blk_rq_map_kern would be the cleaner way going forward.
> + /* insert request and run queue */
> + blk_execute_rq_nowait(rq->q, NULL, rq, true, NULL);
> +
> + wait_for_completion(&wait);
Why not blk_execute_rq?
> @@ -3770,6 +3803,9 @@ static int mtip_queue_rq(struct blk_mq_hw_ctx *hctx,
>
> mtip_init_cmd_header(rq);
>
> + if (rq->rq_flags & RQF_RESERVED)
And in fact I don't think we'd even need the helper I suggested before,
we can just check for REQ_OP_DRV_IN here.
But while we're at it - one oddity in mtip32xx is that it converts
discards to an internal command from ->queue_rq, so we end up using
two requests for it. Just handling discards here would be a nice
improvement. It would also easily allow the driver to support ranged
trims..
But I guess I'm simply to picky and we should just fix up the worst issues
first..