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 --- |