Commit e150f6b8 authored by Ziye Yang's avatar Ziye Yang Committed by Tomasz Zawadzki
Browse files

accel_perf: Add _free_task_buffers_in_pool function.



This function is used to eliminate the duplicated code.

Also rename _free_task to _free_task_buffers to make
it easy to understand the code.

Signed-off-by: default avatarZiye Yang <ziye.yang@intel.com>
Change-Id: I2ef9dbbb81c12c229952f5590f616a17dc2fe087
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6128


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Community-CI: Mellanox Build Bot
parent b34883e0
Loading
Loading
Loading
Loading
+16 −10
Original line number Diff line number Diff line
@@ -370,7 +370,7 @@ _batch_prep_cmd(struct worker_thread *worker, struct ap_task *task,
}

static void
_free_task(struct ap_task *task)
_free_task_buffers(struct ap_task *task)
{
	spdk_dma_free(task->src);
	spdk_dma_free(task->dst);
@@ -616,19 +616,27 @@ dump_result(void)
	return total_failed ? 1 : 0;
}

static inline void
_free_task_buffers_in_pool(struct worker_thread *worker)
{
	struct ap_task *task;

	assert(worker);
	while ((task = TAILQ_FIRST(&worker->tasks_pool))) {
		TAILQ_REMOVE(&worker->tasks_pool, task, link);
		_free_task_buffers(task);
	}
}

static int
_check_draining(void *arg)
{
	struct worker_thread *worker = arg;
	struct ap_task *task;

	assert(worker);

	if (worker->current_queue_depth == 0) {
		while ((task = TAILQ_FIRST(&worker->tasks_pool))) {
			TAILQ_REMOVE(&worker->tasks_pool, task, link);
			_free_task(task);
		}
		_free_task_buffers_in_pool(worker);
		spdk_poller_unregister(&worker->is_draining_poller);
		unregister_worker(worker);
	}
@@ -812,10 +820,8 @@ error:
			TAILQ_REMOVE(&worker->in_use_batches, worker_batch, link);
		}
	}
	while ((task = TAILQ_FIRST(&worker->tasks_pool))) {
		TAILQ_REMOVE(&worker->tasks_pool, task, link);
		_free_task(task);
	}

	_free_task_buffers_in_pool(worker);
	free(worker->batch_base);
	free(worker->task_base);
	free(worker);