From 444677f3b4789b479ea0f006570fdb6a3d344c71 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 19 Mar 2021 07:41:54 +0900 Subject: [PATCH] bdev/nvme: Pass nvme_bdev_ctrlr to the callback to for_each_channel() in reset processings Pass nvme_bdev_ctrlr to callback to each spdk_for_each_channel() call in reset processing. The following patches will register nvme_bdev_subsystem instead of nvme_bdev_ctrlr as io_device. Hence we need a different way to pass nvme_bdev_ctrlr to the completion functions of spdk_for_each_channel(). Signed-off-by: Shuhei Matsumoto Change-Id: Ief31dbbc145b5850e4e5b2e4c9ad7287128ce870 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6950 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Paul Luse Reviewed-by: Jim Harris Reviewed-by: Aleksey Marchuk Tested-by: SPDK CI Jenkins --- module/bdev/nvme/bdev_nvme.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/module/bdev/nvme/bdev_nvme.c b/module/bdev/nvme/bdev_nvme.c index 10ba51286..7ac51c9e0 100644 --- a/module/bdev/nvme/bdev_nvme.c +++ b/module/bdev/nvme/bdev_nvme.c @@ -381,7 +381,7 @@ err: static void _bdev_nvme_check_pending_destruct(struct spdk_io_channel_iter *i, int status) { - struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_io_device(i); + struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_ctx(i); pthread_mutex_lock(&nvme_bdev_ctrlr->mutex); if (nvme_bdev_ctrlr->destruct_after_reset) { @@ -462,14 +462,14 @@ _bdev_nvme_reset_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, int rc) spdk_for_each_channel(nvme_bdev_ctrlr, rc == 0 ? bdev_nvme_complete_pending_resets : bdev_nvme_abort_pending_resets, - NULL, + nvme_bdev_ctrlr, _bdev_nvme_check_pending_destruct); } static void _bdev_nvme_reset_create_qpairs_done(struct spdk_io_channel_iter *i, int status) { - struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_io_device(i); + struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_ctx(i); struct nvme_bdev_io *bio = nvme_bdev_ctrlr->reset_bio; int rc = SPDK_BDEV_IO_STATUS_SUCCESS; @@ -498,7 +498,7 @@ _bdev_nvme_reset_create_qpair(struct spdk_io_channel_iter *i) static void _bdev_nvme_reset_ctrlr(struct spdk_io_channel_iter *i, int status) { - struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_io_device(i); + struct nvme_bdev_ctrlr *nvme_bdev_ctrlr = spdk_io_channel_iter_get_ctx(i); struct nvme_bdev_io *bio = nvme_bdev_ctrlr->reset_bio; int rc; @@ -515,7 +515,7 @@ _bdev_nvme_reset_ctrlr(struct spdk_io_channel_iter *i, int status) /* Recreate all of the I/O queue pairs */ spdk_for_each_channel(nvme_bdev_ctrlr, _bdev_nvme_reset_create_qpair, - NULL, + nvme_bdev_ctrlr, _bdev_nvme_reset_create_qpairs_done); return; @@ -573,7 +573,7 @@ _bdev_nvme_reset(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr) /* First, delete all NVMe I/O queue pairs. */ spdk_for_each_channel(nvme_bdev_ctrlr, _bdev_nvme_reset_destroy_qpair, - NULL, + nvme_bdev_ctrlr, _bdev_nvme_reset_ctrlr); } @@ -594,7 +594,7 @@ bdev_nvme_reset(struct nvme_io_channel *nvme_ch, struct nvme_bdev_io *bio) /* First, delete all NVMe I/O queue pairs. */ spdk_for_each_channel(nvme_ch->ctrlr, _bdev_nvme_reset_destroy_qpair, - NULL, + nvme_ch->ctrlr, _bdev_nvme_reset_ctrlr); } else if (rc == -EBUSY) { /* Don't bother resetting if the controller is in the process of being destructed. */ @@ -681,7 +681,7 @@ bdev_nvme_failover(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, bool remove) /* First, delete all NVMe I/O queue pairs. */ spdk_for_each_channel(nvme_bdev_ctrlr, _bdev_nvme_reset_destroy_qpair, - NULL, + nvme_bdev_ctrlr, _bdev_nvme_reset_ctrlr); } else if (rc != -EBUSY) { return rc;