loop.c (f21c4769d0de00f4873792f8e6f2d1c04c8cd898) loop.c (f4b9e6c90c572519041f4c5d9c4c3dd50aff42d4)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * NVMe over Fabrics loopback device.
4 * Copyright (c) 2015-2016 HGST, a Western Digital Company.
5 */
6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7#include <linux/scatterlist.h>
8#include <linux/blk-mq.h>

--- 127 unchanged lines hidden (view full) ---

136 struct request *req = bd->rq;
137 struct nvme_loop_iod *iod = blk_mq_rq_to_pdu(req);
138 bool queue_ready = test_bit(NVME_LOOP_Q_LIVE, &queue->flags);
139 blk_status_t ret;
140
141 if (!nvmf_check_ready(&queue->ctrl->ctrl, req, queue_ready))
142 return nvmf_fail_nonready_command(&queue->ctrl->ctrl, req);
143
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * NVMe over Fabrics loopback device.
4 * Copyright (c) 2015-2016 HGST, a Western Digital Company.
5 */
6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
7#include <linux/scatterlist.h>
8#include <linux/blk-mq.h>

--- 127 unchanged lines hidden (view full) ---

136 struct request *req = bd->rq;
137 struct nvme_loop_iod *iod = blk_mq_rq_to_pdu(req);
138 bool queue_ready = test_bit(NVME_LOOP_Q_LIVE, &queue->flags);
139 blk_status_t ret;
140
141 if (!nvmf_check_ready(&queue->ctrl->ctrl, req, queue_ready))
142 return nvmf_fail_nonready_command(&queue->ctrl->ctrl, req);
143
144 ret = nvme_setup_cmd(ns, req, &iod->cmd);
144 ret = nvme_setup_cmd(ns, req);
145 if (ret)
146 return ret;
147
148 blk_mq_start_request(req);
149 iod->cmd.common.flags |= NVME_CMD_SGL_METABUF;
150 iod->req.port = queue->ctrl->port;
151 if (!nvmet_req_init(&iod->req, &queue->nvme_cq,
152 &queue->nvme_sq, &nvme_loop_ops))

--- 47 unchanged lines hidden (view full) ---

200 return 0;
201}
202
203static int nvme_loop_init_request(struct blk_mq_tag_set *set,
204 struct request *req, unsigned int hctx_idx,
205 unsigned int numa_node)
206{
207 struct nvme_loop_ctrl *ctrl = set->driver_data;
145 if (ret)
146 return ret;
147
148 blk_mq_start_request(req);
149 iod->cmd.common.flags |= NVME_CMD_SGL_METABUF;
150 iod->req.port = queue->ctrl->port;
151 if (!nvmet_req_init(&iod->req, &queue->nvme_cq,
152 &queue->nvme_sq, &nvme_loop_ops))

--- 47 unchanged lines hidden (view full) ---

200 return 0;
201}
202
203static int nvme_loop_init_request(struct blk_mq_tag_set *set,
204 struct request *req, unsigned int hctx_idx,
205 unsigned int numa_node)
206{
207 struct nvme_loop_ctrl *ctrl = set->driver_data;
208 struct nvme_loop_iod *iod = blk_mq_rq_to_pdu(req);
208
209 nvme_req(req)->ctrl = &ctrl->ctrl;
209
210 nvme_req(req)->ctrl = &ctrl->ctrl;
211 nvme_req(req)->cmd = &iod->cmd;
210 return nvme_loop_init_iod(ctrl, blk_mq_rq_to_pdu(req),
211 (set == &ctrl->tag_set) ? hctx_idx + 1 : 0);
212}
213
214static struct lock_class_key loop_hctx_fq_lock_key;
215
216static int nvme_loop_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
217 unsigned int hctx_idx)

--- 511 unchanged lines hidden ---
212 return nvme_loop_init_iod(ctrl, blk_mq_rq_to_pdu(req),
213 (set == &ctrl->tag_set) ? hctx_idx + 1 : 0);
214}
215
216static struct lock_class_key loop_hctx_fq_lock_key;
217
218static int nvme_loop_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
219 unsigned int hctx_idx)

--- 511 unchanged lines hidden ---