]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
nvme-pci: factor out a nvme_init_hctx_common() helper
authorCaleb Sander Mateos <csander@purestorage.com>
Sat, 26 Apr 2025 02:06:35 +0000 (20:06 -0600)
committerChristoph Hellwig <hch@lst.de>
Tue, 20 May 2025 03:34:27 +0000 (05:34 +0200)
nvme_init_hctx() and nvme_admin_init_hctx() are very similar. In
preparation for adding more logic, factor out a nvme_init_hctx-common()
helper.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Jens Axboe <axboe@kernel.dk>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Reviewed-by: Kanchan Joshi <joshi.k@samsung.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/pci.c

index 2e30e9be7408cba9dbb8918f066717b3a1c24010..30abf134c886613514a0de3d1e3ceab02983fb20 100644 (file)
@@ -397,28 +397,30 @@ static int nvme_pci_npages_prp(void)
        return DIV_ROUND_UP(8 * nprps, NVME_CTRL_PAGE_SIZE - 8);
 }
 
-static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
-                               unsigned int hctx_idx)
+static int nvme_init_hctx_common(struct blk_mq_hw_ctx *hctx, void *data,
+               unsigned qid)
 {
        struct nvme_dev *dev = to_nvme_dev(data);
-       struct nvme_queue *nvmeq = &dev->queues[0];
-
-       WARN_ON(hctx_idx != 0);
-       WARN_ON(dev->admin_tagset.tags[0] != hctx->tags);
+       struct nvme_queue *nvmeq = &dev->queues[qid];
+       struct blk_mq_tags *tags;
 
+       tags = qid ? dev->tagset.tags[qid - 1] : dev->admin_tagset.tags[0];
+       WARN_ON(tags != hctx->tags);
        hctx->driver_data = nvmeq;
        return 0;
 }
 
-static int nvme_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
-                         unsigned int hctx_idx)
+static int nvme_admin_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
+                               unsigned int hctx_idx)
 {
-       struct nvme_dev *dev = to_nvme_dev(data);
-       struct nvme_queue *nvmeq = &dev->queues[hctx_idx + 1];
+       WARN_ON(hctx_idx != 0);
+       return nvme_init_hctx_common(hctx, data, 0);
+}
 
-       WARN_ON(dev->tagset.tags[hctx_idx] != hctx->tags);
-       hctx->driver_data = nvmeq;
-       return 0;
+static int nvme_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
+                            unsigned int hctx_idx)
+{
+       return nvme_init_hctx_common(hctx, data, hctx_idx + 1);
 }
 
 static int nvme_pci_init_request(struct blk_mq_tag_set *set,