Commit 5ad0db1c authored by Seth Howell's avatar Seth Howell Committed by Tomasz Zawadzki
Browse files

bdev_nvme: allow bio to be null in resets.



Also, add a small callback function to display an error when reset
fails.

Change-Id: I74c9e9f6842cbd3b608eae2178bd3605cd642fbd
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/473741


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 0cdf3f51
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -280,17 +280,31 @@ bdev_nvme_flush(struct nvme_bdev *nbdev, struct nvme_bdev_io *bio,
	return 0;
}

static void
_bdev_nvme_reset_complete(struct nvme_bdev_ctrlr *nvme_bdev_ctrlr, int rc)
{
	if (rc) {
		SPDK_ERRLOG("Resetting controller failed.\n");
	} else {
		SPDK_NOTICELOG("Resetting controller successful.\n");
	}
}

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);
	void *ctx = spdk_io_channel_iter_get_ctx(i);
	int rc = SPDK_BDEV_IO_STATUS_SUCCESS;

	if (status) {
		rc = SPDK_BDEV_IO_STATUS_FAILED;
	}
	if (ctx) {
		spdk_bdev_io_complete(spdk_bdev_io_from_ctx(ctx), rc);
	}
	_bdev_nvme_reset_complete(nvme_bdev_ctrlr, status);
}

static void
_bdev_nvme_reset_create_qpair(struct spdk_io_channel_iter *i)
@@ -320,13 +334,19 @@ _bdev_nvme_reset(struct spdk_io_channel_iter *i, int status)
	int rc;

	if (status) {
		if (bio) {
			spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bio), SPDK_BDEV_IO_STATUS_FAILED);
		}
		_bdev_nvme_reset_complete(nvme_bdev_ctrlr, status);
		return;
	}

	rc = spdk_nvme_ctrlr_reset(nvme_bdev_ctrlr->ctrlr);
	if (rc != 0) {
		if (bio) {
			spdk_bdev_io_complete(spdk_bdev_io_from_ctx(bio), SPDK_BDEV_IO_STATUS_FAILED);
		}
		_bdev_nvme_reset_complete(nvme_bdev_ctrlr, rc);
		return;
	}