|
@@ -174,15 +174,12 @@ static blk_status_t nvme_loop_queue_rq(struct blk_mq_hw_ctx *hctx,
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
+ blk_mq_start_request(req);
|
|
|
iod->cmd.common.flags |= NVME_CMD_SGL_METABUF;
|
|
|
iod->req.port = nvmet_loop_port;
|
|
|
if (!nvmet_req_init(&iod->req, &queue->nvme_cq,
|
|
|
- &queue->nvme_sq, &nvme_loop_ops)) {
|
|
|
- nvme_cleanup_cmd(req);
|
|
|
- blk_mq_start_request(req);
|
|
|
- nvme_loop_queue_response(&iod->req);
|
|
|
+ &queue->nvme_sq, &nvme_loop_ops))
|
|
|
return BLK_STS_OK;
|
|
|
- }
|
|
|
|
|
|
if (blk_rq_payload_bytes(req)) {
|
|
|
iod->sg_table.sgl = iod->first_sgl;
|
|
@@ -196,8 +193,6 @@ static blk_status_t nvme_loop_queue_rq(struct blk_mq_hw_ctx *hctx,
|
|
|
iod->req.transfer_len = blk_rq_payload_bytes(req);
|
|
|
}
|
|
|
|
|
|
- blk_mq_start_request(req);
|
|
|
-
|
|
|
schedule_work(&iod->work);
|
|
|
return BLK_STS_OK;
|
|
|
}
|