Commit e45c8090 authored by Jacek Kalwas's avatar Jacek Kalwas Committed by Tomasz Zawadzki
Browse files

accel: improve accel sequence obj release



It might be beneficial to put sequence obj before executing callback
function as this gives oportunity to reuse the same sequence obj by the
user immediately.

Change-Id: I33101aa9b47a46ff01f6af2bdbc25bc4c1a53ddc
Signed-off-by: default avatarJacek Kalwas <jacek.kalwas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/24037


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent fc3e26a5
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -1384,20 +1384,23 @@ accel_sequence_complete_tasks(struct spdk_accel_sequence *seq)
static void
accel_sequence_complete(struct spdk_accel_sequence *seq)
{
	SPDK_DEBUGLOG(accel, "Completed sequence: %p with status: %d\n", seq, seq->status);
	spdk_accel_completion_cb cb_fn = seq->cb_fn;
	void *cb_arg = seq->cb_arg;
	int status = seq->status;

	SPDK_DEBUGLOG(accel, "Completed sequence: %p with status: %d\n", seq, status);

	accel_update_stats(seq->ch, sequence_executed, 1);
	if (spdk_unlikely(seq->status != 0)) {
	if (spdk_unlikely(status != 0)) {
		accel_update_stats(seq->ch, sequence_failed, 1);
	}

	/* First notify all users that appended operations to this sequence */
	accel_sequence_complete_tasks(seq);
	accel_sequence_put(seq);

	/* Then notify the user that finished the sequence */
	seq->cb_fn(seq->cb_arg, seq->status);

	accel_sequence_put(seq);
	cb_fn(cb_arg, status);
}

static void