bdev/nvme: remove the nvme_bdev from list safely.

There remove callback function will remove the nvme_bdev from the global
list, we do not need to remove the device in the function bdev_nvme_destruct().
just make sure to remove it from list when the app exit.

Change-Id: I1859bfd696ed9c0ca3ac1cd8ffadfd9488df0fcd
Signed-off-by: Cunyin Chang <cunyin.chang@intel.com>
Reviewed-on: https://review.gerrithub.io/375941
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Cunyin Chang 2017-08-28 20:05:05 +08:00 committed by Daniel Verkamp
parent 5ea96e511a
commit 0bd8e75199

View File

@ -239,11 +239,8 @@ bdev_nvme_destruct(void *ctx)
pthread_mutex_lock(&g_bdev_nvme_mutex);
nvme_ctrlr->ref--;
TAILQ_REMOVE(&g_nvme_bdevs, nvme_disk, link);
free(nvme_disk->disk.name);
free(nvme_disk);
if (nvme_ctrlr->ref == 0) {
TAILQ_REMOVE(&g_nvme_ctrlrs, nvme_ctrlr, tailq);
pthread_mutex_unlock(&g_bdev_nvme_mutex);
@ -1087,6 +1084,7 @@ bdev_nvme_library_fini(void)
}
TAILQ_FOREACH_SAFE(nvme_bdev, &g_nvme_bdevs, link, btmp) {
TAILQ_REMOVE(&g_nvme_bdevs, nvme_bdev, link);
bdev_nvme_destruct(&nvme_bdev->disk);
}
}