Re: [PATCH V13 04/10] mmc: block: Add CQE support

From: Linus Walleij
Date: Wed Nov 08 2017 - 04:00:15 EST


On Fri, Nov 3, 2017 at 2:20 PM, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:

> @@ -2188,11 +2327,18 @@ enum mmc_issued mmc_blk_mq_issue_rq(struct mmc_queue *mq, struct request *req)
> return MMC_REQ_FAILED_TO_START;
> }
> return MMC_REQ_FINISHED;
> + case MMC_ISSUE_DCMD:
> case MMC_ISSUE_ASYNC:
> switch (req_op(req)) {
> + case REQ_OP_FLUSH:
> + ret = mmc_blk_cqe_issue_flush(mq, req);
> + break;
> case REQ_OP_READ:
> case REQ_OP_WRITE:
> - ret = mmc_blk_mq_issue_rw_rq(mq, req);
> + if (mq->use_cqe)
> + ret = mmc_blk_cqe_issue_rw_rq(mq, req);
> + else
> + ret = mmc_blk_mq_issue_rw_rq(mq, req);
> break;
> default:
> WARN_ON_ONCE(1);

This and other bits gives me the feeling CQE is now actually ONLY
working on the MQ path.

That is good. We only add new functionality on the MQ path,
yay!

But this fact (only abailable iff MQ==true) should at least be
mentioned in the commit message I think?

So why not ditch the old block layer or at least make MQ default?

When you keep it like this people have to reconfigure
their kernel to enable MQ before they see the benefits of MQ+CQE
combined, I think that should rather be the default experience.

Yours,
Linus Walleij