Commit b53b961c authored by Konrad Sztyber's avatar Konrad Sztyber
Browse files

accel/error: move interval check to a function



Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I1595ffbd884d78f3568a3e09b95d593af38226c4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25283


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
parent c9f92cbf
Loading
Loading
Loading
Loading
+23 −9
Original line number Diff line number Diff line
@@ -74,15 +74,14 @@ accel_error_task_complete_cb(void *arg, int status)
	cb_fn(cb_arg, status);
}

static int
accel_error_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *task)
static bool
accel_error_should_inject(struct spdk_io_channel *ch, struct spdk_accel_task *task)
{
	struct accel_error_channel *errch = spdk_io_channel_get_ctx(ch);
	struct accel_error_task *errtask = accel_error_get_task_ctx(task);
	struct accel_error_inject_info *info = &errch->injects[task->op_code];

	if (info->opts.type == ACCEL_ERROR_INJECT_DISABLE) {
		goto submit;
		return false;
	}

	info->interval++;
@@ -91,17 +90,32 @@ accel_error_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *tas
		info->count++;

		if (info->count <= info->opts.count) {
			errtask->ch = errch;
			errtask->cb_fn = task->cb_fn;
			errtask->cb_arg = task->cb_arg;
			task->cb_fn = accel_error_task_complete_cb;
			task->cb_arg = task;
			return true;
		} else {
			info->opts.type = ACCEL_ERROR_INJECT_DISABLE;
			info->interval = 0;
			info->count = 0;
		}
	}

	return false;
}

static int
accel_error_submit_tasks(struct spdk_io_channel *ch, struct spdk_accel_task *task)
{
	struct accel_error_channel *errch = spdk_io_channel_get_ctx(ch);
	struct accel_error_task *errtask = accel_error_get_task_ctx(task);

	if (!accel_error_should_inject(ch, task)) {
		goto submit;
	}

	errtask->ch = errch;
	errtask->cb_fn = task->cb_fn;
	errtask->cb_arg = task->cb_arg;
	task->cb_fn = accel_error_task_complete_cb;
	task->cb_arg = task;
submit:
	return g_sw_module->submit_tasks(errch->swch, task);
}