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;
                iod->req.transfer_len = blk_rq_payload_bytes(req);
        }
 
-       blk_mq_start_request(req);
-
        schedule_work(&iod->work);
        return BLK_STS_OK;
 }