From cf90e4de1626f16e0afc804eed21167930bb2f49 Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Wed, 29 Mar 2017 10:04:43 -0700 Subject: [PATCH] bdev/nvme: Simplify logic in remove_cb This was doing an extra loop iteration. Change-Id: Iaf1a1e4d5faaa3100d3c0fca6c7c3a8d1cd77101 Signed-off-by: Ben Walker --- lib/bdev/nvme/blockdev_nvme.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/lib/bdev/nvme/blockdev_nvme.c b/lib/bdev/nvme/blockdev_nvme.c index a7d832dfa..4a82d629c 100644 --- a/lib/bdev/nvme/blockdev_nvme.c +++ b/lib/bdev/nvme/blockdev_nvme.c @@ -644,27 +644,21 @@ nvme_ctrlr_get(const struct spdk_nvme_transport_id *trid) static void remove_cb(void *cb_ctx, struct spdk_nvme_ctrlr *ctrlr) { - struct nvme_ctrlr *nvme_ctrlr; struct nvme_bdev *nvme_bdev, *btmp; - TAILQ_HEAD(, nvme_bdev) nvme_bdevs; + TAILQ_HEAD(, nvme_bdev) removed_bdevs; - TAILQ_INIT(&nvme_bdevs); + TAILQ_INIT(&removed_bdevs); pthread_mutex_lock(&g_bdev_nvme_mutex); - TAILQ_FOREACH(nvme_ctrlr, &g_nvme_ctrlrs, tailq) { - if (nvme_ctrlr->ctrlr == ctrlr) { - TAILQ_FOREACH_SAFE(nvme_bdev, &g_nvme_bdevs, link, btmp) { - if (nvme_bdev->nvme_ctrlr == nvme_ctrlr) { - TAILQ_REMOVE(&g_nvme_bdevs, nvme_bdev, link); - TAILQ_INSERT_TAIL(&nvme_bdevs, nvme_bdev, link); - } - } - break; + TAILQ_FOREACH_SAFE(nvme_bdev, &g_nvme_bdevs, link, btmp) { + if (nvme_bdev->nvme_ctrlr->ctrlr == ctrlr) { + TAILQ_REMOVE(&g_nvme_bdevs, nvme_bdev, link); + TAILQ_INSERT_TAIL(&removed_bdevs, nvme_bdev, link); } } pthread_mutex_unlock(&g_bdev_nvme_mutex); - TAILQ_FOREACH_SAFE(nvme_bdev, &nvme_bdevs, link, btmp) { - TAILQ_REMOVE(&nvme_bdevs, nvme_bdev, link); + TAILQ_FOREACH_SAFE(nvme_bdev, &removed_bdevs, link, btmp) { + TAILQ_REMOVE(&removed_bdevs, nvme_bdev, link); spdk_bdev_unregister(&nvme_bdev->disk); } }