Commit 48820a5e authored by GangCao's avatar GangCao Committed by Daniel Verkamp
Browse files

nvme: check the IO qpair is on the list before removing



Change-Id: Ic9706a51dcf65a848088448a3cfcdabd20f42f7d
Signed-off-by: default avatarGangCao <gang.cao@intel.com>
parent df06c0d2
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -113,12 +113,27 @@ nvme_ctrlr_proc_remove_io_qpair(struct spdk_nvme_qpair *qpair)
{
	struct spdk_nvme_ctrlr_process	*active_proc;
	struct spdk_nvme_ctrlr		*ctrlr = qpair->ctrlr;
	struct spdk_nvme_qpair          *active_qpair, *tmp_qpair;
	pid_t				pid = getpid();
	bool				proc_found = false;

	TAILQ_FOREACH(active_proc, &ctrlr->active_procs, tailq) {
		if (active_proc->pid == pid) {
			TAILQ_REMOVE(&active_proc->allocated_io_qpairs, qpair,
				     per_process_tailq);
			proc_found = true;
			break;
		}
	}

	if (proc_found == false) {
		return;
	}

	TAILQ_FOREACH_SAFE(active_qpair, &active_proc->allocated_io_qpairs,
			   per_process_tailq, tmp_qpair) {
		if (active_qpair == qpair) {
			TAILQ_REMOVE(&active_proc->allocated_io_qpairs,
				     active_qpair, per_process_tailq);

			break;
		}
	}