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

Change-Id: Ic9706a51dcf65a848088448a3cfcdabd20f42f7d
Signed-off-by: GangCao <gang.cao@intel.com>
This commit is contained in:
GangCao 2016-12-06 18:52:26 -05:00 committed by Daniel Verkamp
parent df06c0d2af
commit 48820a5ef6

View File

@ -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;
}
}