loop.c (1c5f8e882a05de5c011e8c3fbeceb0d1c590eb53) loop.c (4237de2f73a669e4f89ac0aa2b44fb1a1d9ec583)
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>

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

258 .queue_rq = nvme_loop_queue_rq,
259 .complete = nvme_loop_complete_rq,
260 .init_request = nvme_loop_init_request,
261 .init_hctx = nvme_loop_init_admin_hctx,
262};
263
264static void nvme_loop_destroy_admin_queue(struct nvme_loop_ctrl *ctrl)
265{
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>

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

258 .queue_rq = nvme_loop_queue_rq,
259 .complete = nvme_loop_complete_rq,
260 .init_request = nvme_loop_init_request,
261 .init_hctx = nvme_loop_init_admin_hctx,
262};
263
264static void nvme_loop_destroy_admin_queue(struct nvme_loop_ctrl *ctrl)
265{
266 clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags);
266 if (!test_and_clear_bit(NVME_LOOP_Q_LIVE, &ctrl->queues[0].flags))
267 return;
267 nvmet_sq_destroy(&ctrl->queues[0].nvme_sq);
268 blk_cleanup_queue(ctrl->ctrl.admin_q);
269 blk_cleanup_queue(ctrl->ctrl.fabrics_q);
270 blk_mq_free_tag_set(&ctrl->admin_tag_set);
271}
272
273static void nvme_loop_free_ctrl(struct nvme_ctrl *nctrl)
274{

--- 460 unchanged lines hidden ---
268 nvmet_sq_destroy(&ctrl->queues[0].nvme_sq);
269 blk_cleanup_queue(ctrl->ctrl.admin_q);
270 blk_cleanup_queue(ctrl->ctrl.fabrics_q);
271 blk_mq_free_tag_set(&ctrl->admin_tag_set);
272}
273
274static void nvme_loop_free_ctrl(struct nvme_ctrl *nctrl)
275{

--- 460 unchanged lines hidden ---