Commit a0ea2523 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Tomasz Zawadzki
Browse files

bdev/nvme: Factor out reset_io completion into a helper function



This will be helpful to simplify the following patches.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: I66939f2953c66582bfcb79cfe187814280e89680
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7324


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
parent 73b4b9ad
Loading
Loading
Loading
Loading
+28 −10
Original line number Diff line number Diff line
@@ -481,18 +481,36 @@ bdev_nvme_abort_pending_resets(struct spdk_io_channel_iter *i)
	spdk_for_each_channel_continue(i, 0);
}

static void
bdev_nvme_reset_io_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr,
			    struct nvme_bdev_io *bio, int rc)
{
	enum spdk_bdev_io_status io_status = SPDK_BDEV_IO_STATUS_SUCCESS;

	if (rc) {
		io_status = SPDK_BDEV_IO_STATUS_FAILED;
	}

	spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bio), io_status);

	/* Make sure we clear any pending resets before returning. */
	spdk_for_each_channel(nvme_bdev_ctrlr,
			      rc == 0 ? bdev_nvme_complete_pending_resets :
			      bdev_nvme_abort_pending_resets,
			      nvme_bdev_ctrlr,
			      _bdev_nvme_check_pending_destruct);
}

static void
_bdev_nvme_reset_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, int rc)
{
	struct nvme_bdev_ctrlr_trid *curr_trid;
	struct nvme_bdev_io *bio = nvme_bdev_ctrlr->reset_bio;
	enum spdk_bdev_io_status io_status = SPDK_BDEV_IO_STATUS_SUCCESS;

	nvme_bdev_ctrlr->reset_bio = NULL;

	if (rc) {
		SPDK_ERRLOG("Resetting controller failed.\n");
		io_status = SPDK_BDEV_IO_STATUS_FAILED;
	} else {
		SPDK_NOTICELOG("Resetting controller successful.\n");
	}
@@ -515,9 +533,8 @@ _bdev_nvme_reset_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, int rc)
	pthread_mutex_unlock(&nvme_bdev_ctrlr->mutex);

	if (bio) {
		spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bio), io_status);
	}

		bdev_nvme_reset_io_complete(nvme_bdev_ctrlr, bio, rc);
	} else {
		/* Make sure we clear any pending resets before returning. */
		spdk_for_each_channel(nvme_bdev_ctrlr,
				      rc == 0 ? bdev_nvme_complete_pending_resets :
@@ -525,6 +542,7 @@ _bdev_nvme_reset_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, int rc)
				      nvme_bdev_ctrlr,
				      _bdev_nvme_check_pending_destruct);
	}
}

static void
_bdev_nvme_reset_create_qpairs_done(struct spdk_io_channel_iter *i, int status)