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

bdev/error: Use bdev_open_ext() to inject error instead of bdev_get_by_name()



Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Iba05ed816c2ecb4346dd6a77e9579c6af6d2b06f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12071


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent d77d3179
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
@@ -94,22 +94,32 @@ static struct spdk_bdev_module error_if = {

SPDK_BDEV_MODULE_REGISTER(error, &error_if)

static void
dummy_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev, void *ctx)
{
}

int
vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint32_t error_num)
{
	struct spdk_bdev_desc *desc;
	struct spdk_bdev *bdev;
	struct spdk_bdev_part *part;
	struct error_disk *error_disk = NULL;
	uint32_t i;
	int rc = 0;

	pthread_mutex_lock(&g_vbdev_error_mutex);
	bdev = spdk_bdev_get_by_name(name);
	if (!bdev) {
		SPDK_ERRLOG("Could not find ErrorInjection bdev %s\n", name);

	rc = spdk_bdev_open_ext(name, false, dummy_bdev_event_cb, NULL, &desc);
	if (rc != 0) {
		SPDK_ERRLOG("Could not open ErrorInjection bdev %s\n", name);
		pthread_mutex_unlock(&g_vbdev_error_mutex);
		return -ENODEV;
		return rc;
	}

	bdev = spdk_bdev_desc_get_bdev(desc);

	TAILQ_FOREACH(part, &g_error_disks, tailq) {
		if (bdev == spdk_bdev_part_get_bdev(part)) {
			error_disk = (struct error_disk *)part;
@@ -119,8 +129,8 @@ vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint

	if (error_disk == NULL) {
		SPDK_ERRLOG("Could not find ErrorInjection bdev %s\n", name);
		pthread_mutex_unlock(&g_vbdev_error_mutex);
		return -ENODEV;
		rc = -ENODEV;
		goto exit;
	}

	if (0xffffffff == io_type) {
@@ -136,8 +146,11 @@ vbdev_error_inject_error(char *name, uint32_t io_type, uint32_t error_type, uint
		error_disk->error_vector[io_type].error_type = error_type;
		error_disk->error_vector[io_type].error_num = error_num;
	}

exit:
	spdk_bdev_close(desc);
	pthread_mutex_unlock(&g_vbdev_error_mutex);
	return 0;
	return rc;
}

static void